заголовок Android не будет отображаться на панели инструментов

У меня есть xml, который я использую с таким количеством действий с файлом фрагментов, но моя проблема в том, что я не могу отображать текст, который хочу, на панели инструментов, я использую этот xml таким образом, потому что у меня есть ящик навигации, и мне нужно что-то обрабатывать так что я должен был сделать это таким образом.

мой xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/frame_container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".StatusActivity"
    android:orientation="vertical" >

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        style="@style/ToolBarStyle"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="?attr/colorPrimary"
        android:minHeight="@dimen/abc_action_bar_default_height_material" />

</RelativeLayout>

Одно из моих занятий:

public class GroupChatActivity extends ActionBarActivity {

    @Override
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_base_layout);

        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
         setSupportActionBar(toolbar);
         getSupportActionBar().setDisplayShowHomeEnabled(true);

         ActionBar actionBar = getSupportActionBar();
         actionBar.setTitle("Groups history");

        Aniways.init(this);

        if(savedInstanceState == null)
        {
            FragmentManager manager = getSupportFragmentManager();

            Fragment fragment = GroupChatFragment.newInstance(getIntent().getIntExtra("uid", 0));
            manager.beginTransaction().add(R.id.frame_container, fragment).commit();
        }
    }
}

как видите, я пытаюсь установить заголовок на панель действий, но это не работает.


person Kareem Essam Gaber    schedule 25.12.2014    source источник
comment
Попробуйте позвонить getSupportActionBar().setDisplayShowTitleEnabled(true), затем toolbar.setTitle(title)   -  person Nikola Despotoski    schedule 25.12.2014
comment
@NikolaDespotoski Пробовал, не работает.   -  person Alex Bitek    schedule 29.06.2015
comment
Попробуйте вызвать (в kotlin) supportActionBar?.title = Html.fromHtml(‹font color=\black\›Toolbar title‹/font›)   -  person Anshul1507    schedule 30.01.2021


Ответы (10)


Параметр,

app:title="@string/my_title"

в объявлении android.support.v7.widget.Toolbar жестко кодирует заголовок на панели инструментов.

Чтобы задать заголовок программно,

Toolbar toolbar = (Toolbar) findViewById(R.id.my_toolbar);
toolbar.setTitle("my title");
setSupportActionBar(toolbar);

в вашем классе деятельности.

person Chad Mx    schedule 13.02.2016
comment
Какого черта android:title не выдает какую-то ошибку?! - person Daniel Wilson; 16.09.2016

Попробуйте это .. этот метод работает для меня .. !! надеюсь, что это может помочь кому-то ..!!

<android.support.v7.widget.Toolbar  
 xmlns:app="http://schemas.android.com/apk/res-auto"  
 android:id="@+id/my_awesome_toolbar"  
 android:layout_width="match_parent"  
 android:layout_height="wrap_content"  
 android:background="?attr/colorPrimary"  
 android:minHeight="?attr/actionBarSize"  
 app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" >  

<TextView  
   android:id="@+id/toolbar_title"  
   android:layout_width="wrap_content"  
   android:layout_height="wrap_content"  
   android:layout_gravity="center"  
   android:singleLine="true"  
   android:text="Toolbar Title"  
   android:textColor="@android:color/white"  
   android:textSize="18sp"  
   android:textStyle="bold" />  

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

ИЗМЕНИТЬ

Вы также можете использовать это.

setSupportActionBar(toolbar);
if (getSupportActionBar() != null)
      getSupportActionBar().setTitle("Toolbar title");
person Ragu Swaminathan    schedule 04.11.2015
comment
при этом кажется, что функциональность getSupportActionBar() обрывается - person Pievis; 22.12.2015
comment
да, но у меня не работает getSupportActionBar(), в некоторых худших случаях я использую это, .. - person Ragu Swaminathan; 22.12.2015

Около суток искал причину проблемы. Ни supportActionBar?.title = "SomeTitle", ни supportActionBar?.setDisplayShowTitleEnabled(true) не сработали, и хаки с кастомными панелями инструментов из ответов здесь выглядели хорошо.

В моей активности используется CollapsingToolbarLayout, но не отображается ни заголовок, ни label из манифеста, ни динамическая установка. Но образец ScrollingActivity (Новый - Активность - ...) отображал заголовок.

Наконец, я настроил пример проекта, скопировал MyActivity и ScrollingActivity и просмотрел diff.

layout_height оба параметра AppBarLayout и CollapsingToolbarLayout должны иметь значение match_parent или фиксированный размер. Вот и все. См. рабочий код ниже.

<com.google.android.material.appbar.AppBarLayout
            android:id="@+id/app_bar"
            android:layout_width="match_parent"
            android:layout_height="180dp"
            android:fitsSystemWindows="true"
            android:theme="@style/AppTheme.AppBarOverlay"
            >

        <com.google.android.material.appbar.CollapsingToolbarLayout
                android:id="@+id/toolbar_layout"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:fitsSystemWindows="true"
                app:layout_scrollFlags="scroll|exitUntilCollapsed"
                app:toolbarId="@id/toolbar"
                app:contentScrim="?attr/colorPrimary"
                >

            <androidx.appcompat.widget.Toolbar
                    android:id="@+id/toolbar"
                    android:layout_width="match_parent"
                    android:layout_height="?attr/actionBarSize"
                    android:background="?attr/colorPrimary"
                    app:popupTheme="@style/AppTheme.PopupOverlay"
                    app:layout_collapseMode="pin"
                    />

        </com.google.android.material.appbar.CollapsingToolbarLayout>
    </com.google.android.material.appbar.AppBarLayout>
person MainActivity    schedule 20.11.2019
comment
Вы можете добиться того же, установив app:titleEnabled=false в CollapsingToolbarLayout. - person Milan; 19.05.2021

Попробуйте toolbar.setTitle('Groups history');

person csmurphy84    schedule 25.12.2014
comment
История целей, вы должны передавать аргументы с двойными кавычками - person Muhammad Usman; 04.05.2018

getActionBar().setTitle("Groups History");

или если вы используете AppCompat библиотеки;

getSupportActionBar().setTitle("Groups History");

person Kyle Mew    schedule 01.06.2015

Я сделал пользовательскую панель действий.

Макет iguepardos_action_bar.xml с этим кодом

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:local="http://schemas.android.com/apk/res-auto"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/blanco"
android:minHeight="?attr/actionBarSize">

    <TextView
    android:id="@+id/toolbar_title"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="left"
    android:singleLine="true"
    android:text="Toolbar Title"
    android:textColor="@color/naranja"
    android:textSize="18sp" />

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

В моем расширенном классе AppCompatActivity у меня было это:

protected void onCreate(Bundle savedInstanceState) {
.... 
....

getSupportActionBar().setDisplayShowCustomEnabled(true); // is for specify use custom bar 
getSupportActionBar().setCustomView(R.layout.iguepardos_action_bar);  // my custom layout
getSupportActionBar().setDisplayHomeAsUpEnabled(true); // Button for come back

View mCustomView = getSupportActionBar().getCustomView(); // Set the view
TextView TitleToolBar = (TextView) mCustomView.findViewById(R.id.toolbar_title); // find title control
TitleToolBar.setText("The Title Show"); // Set the Title

}
person A. Senna    schedule 01.12.2016

На самом деле мне нужно было получить toolbar_title, чтобы установить текст в каждое другое действие:

    toolbar = findViewById(R.id.toolbar);
    toolbarTitle = findViewById(R.id.toolbar_title);   //<----- here
    toolbarTitle.setText(getString(R.string.my_activity_toolbar_title));
    setSupportActionBar(toolbar);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
person Matteo    schedule 06.11.2019

если цвет вашего заголовка белый, и панель инструментов также белая, вы не сможете ее различить. Так что попробуйте изменить цвет панели инструментов

person Nurseyit Tursunkulov    schedule 21.03.2020

Приведенный ниже код работал со мной:

 Toolbar myToolBar = findViewById(R.id.my_toolbar);
 setSupportActionBar(myToolBar);
 getSupportActionBar().setTitle(getString(R.string.toolbar_title_note));

Сначала пробовал с getSupportActionBar().setDisplayShowTitleEnabled(true);, а потом без него. Это сработало для обоих случаев.

Это настройки градиента для моего проекта:

minSdkVersion 16
targetSdkVersion 30
compileSdkVersion 30
buildToolsVersion "30.0.3"
person Aman Srivastava    schedule 04.06.2021

person    schedule
comment
Для меня это работает без этого на Android 5.1.1, т.е. только с getSupportActionBar().setTitle, заголовок внутри панели инструментов устанавливается, но если я пытаюсь установить заголовок непосредственно из ссылки на панель инструментов, это не так, только через getSupportActionBar() - person Alex Bitek; 29.06.2015