Заголовок не отображается на пользовательской панели инструментов - PullRequest
0 голосов
/ 16 октября 2018

Я пытаюсь реализовать пользовательскую панель инструментов, но не могу получить название в ней.Я перепробовал много сообщений на StackOverflow, но безуспешно.

Activity_Main.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <include layout="@layout/toolbar"
        android:id="@+id/toolbar"/>
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="Hello World!" />

</RelativeLayout>

Toolbar.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/colorPrimary"
    android:elevation="4dp"
    >

</android.support.v7.widget.Toolbar>

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.diong.amyappname">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

Styles.xml

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>

</resources>

MainActivity.java

package com.example.diong.amyApp;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.Toolbar;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Toolbar toolbar = findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
    }
}

Я действительно много пробовал.

  • Попытка установить заголовок с помощью getSupportActionBar (). SetTitle (title);
  • Я пробовал другие компьютеры сновые проекты.
  • Я пытался использовать другие методы

Если бы кто-то мог мне помочь, это было бы здорово!

ОБНОВЛЕНИЕ

Я нашел исправление "a", В toolbar.xml добавьте:

xmlns:app="http://schemas.android.com/apk/res-auto"
app:title="@string/app_name"

Теперь это работает, но .. Я вижу, что код был предложен вMainActivity.java ничего не делает

Toolbar toolbar = findViewById(R.id.toolbar);

toolbar.setTitle("Your title here");

setSupportActionBar(toolbar);

Кто-нибудь может мне помочь?

ОБНОВЛЕНИЕ 2.0

Я нашелошибка, и я обнаружил, что название работает нормально на виртуальном устройстве или моем телефоне, просто нетt в дизайне предварительного просмотра

Снимок экрана IDE 1

Снимок экрана IDE 2

Снимок экрана IDE 3

Снимок экрана IDE 4

Снимок экрана ошибки IDE 5

Снимок экрана ошибки IDE 6

Ответы [ 4 ]

0 голосов
/ 03 сентября 2019

С моей точки зрения, вам нужно внести изменения в ваш код, например:

Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setTitle(Html.fromHtml(
            "<font color='#673AB7'><b>Your Title</b></font>")
0 голосов
/ 16 октября 2018

Возьмите идентификатор, установленный внутри тега include, и поместите его внутри тега Toolbar.Здесь команда include размещает Toolbar.xml внутри Activity_Main.xml, но не влияет на значения id до Toolbar.Таким образом, ваши XML-файлы должны выглядеть следующим образом:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <include layout="@layout/toolbar"
        />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="Hello World!" />

</RelativeLayout>

И это для панели инструментов:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/colorPrimary"
    android:elevation="4dp"
    android:id="@+id/toolbar"
    >

</android.support.v7.widget.Toolbar>

И не забудьте установить свой заголовок, если вы хотите, чтобы он динамически развивался следующим образом:

package com.example.diong.amyApp;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.Toolbar;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Toolbar toolbar = findViewById(R.id.toolbar);

         toolbar.setTitle("Your title here");

        setSupportActionBar(toolbar);


    }
}
0 голосов
/ 16 октября 2018

Невозможно получить реальный "живой" заголовок для отображения в предварительном просмотре IDE.

Предварительный просмотр не знает о коде, выполненном в методе onCreate() вашей деятельности (даже если вы укажетеtools:context в вашем корневом представлении).Это означает, что предварительный просмотр не знает, что это Toolbar является панелью действий вашей активности , и поэтому он не знает, что должен отображать заголовок.Кроме того, он не будет знать о каких-либо setTitle() вызовах, совершенных в вашей деятельности.

Однако вы можете добавить tools:title к самой панели инструментов, чтобы вы могли видеть некоторый текст там,Это покажет вам, как будет выглядеть заголовок, поэтому вы сможете увидеть цвет / размер текста и т. Д. В предварительном просмотре.

0 голосов
/ 16 октября 2018

Я думаю, проблема в том, что ваш идентификатор toolbar является идентификатором вашего include тега, а не Toolbar.Поэтому попробуйте удалить тег include и заменить его на Toolbar.Не забудьте добавить идентификатор к вашему Toolbar.Тогда это должно работать.

Activity_Main.xml

<?xml version="1.0" encoding="utf-8"?>
 <RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">

     <android.support.v7.widget.Toolbar          
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:background="@color/colorPrimary"
     android:elevation="4dp"
     android:id="@+id/toolbar"
      >

 </android.support.v7.widget.Toolbar>
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true"
    android:text="Hello World!" />

  </RelativeLayout>

Чтобы изменить заголовок, добавьте getSupportActionBar.setTitle("Your title"); к вашей основной деятельности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...