Как изменить текст на панели действий

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

Например: мой домашний экран может сказать "page1" в панели действий, а другое действие, которое приложение переключается на, может иметь "page2" в панели действий экранов.

Ответ 1

Обновление: последний шаблон ActionBar (Title):

FYI, ActionBar был введен в API Level 11. ActionBar - это функция окна в верхней части Activity, которая может отображать название активности, режимы навигации и другие интерактивные элементы, такие как поиск.

Я точно помню, как настроить панель заголовка и сделать его согласованным через приложение. Поэтому я могу провести сравнение с более ранними днями и указать некоторые преимущества использования ActionBar:

  • Он предлагает своим пользователям знакомый интерфейс для приложений, которые система изящно адаптирует для разных конфигураций экрана.
  • Разработчикам не нужно писать много кода для отображения названий действий, значков и режимов навигации, потому что ActionBar уже готов с абстракцией верхнего уровня.

Например:

enter image description here

enter image description here

= > Обычный способ,

getActionBar().setTitle("Hello world App");   
getSupportActionBar().setTitle("Hello world App");  // provide compatibility to all the versions

= > Пользовательская панель действий,

Например:

@Override
public void setActionBar(String heading) {
    // TODO Auto-generated method stub

    com.actionbarsherlock.app.ActionBar actionBar = getSupportActionBar();
    actionBar.setHomeButtonEnabled(true);
    actionBar.setDisplayHomeAsUpEnabled(false);
    actionBar.setDisplayShowHomeEnabled(false);
    actionBar.setBackgroundDrawable(new ColorDrawable(getResources().getColor(R.color.title_bar_gray)));
    actionBar.setTitle(heading);
    actionBar.show();

}

Стилирование панели действий:

ActionBar предоставляет вам базовые и знакомые взгляды, режимы навигации и другие быстрые действия. Но это не значит, что он выглядит одинаково в каждом приложении. Вы можете настроить его в соответствии с требованиями к пользовательскому интерфейсу и дизайну. Вам просто нужно определить и написать стили и темы.

Подробнее: Стилирование панели действий

И если вы хотите создавать стили для ActionBar, этот инструмент Style Generator может помочь вам.

=============================================== ==================================

Старый: Ранние дни:

= > Обычный способ,

вы можете изменить название каждого экрана (т.е. активность), установив Android:label

   <activity android:name=".Hello_World"
                  android:label="This is the Hello World Application">
   </activity>

= > Пользовательский - заголовок - строка


Но если вы хотите настроить панель заголовка по-своему, то есть Want to put Image icon and custom-text, для меня работает следующий код:

main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"/>

titlebar.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="400dp" 
  android:layout_height="fill_parent"
  android:orientation="horizontal">

<ImageView android:id="@+id/ImageView01" 
            android:layout_width="57dp" 
            android:layout_height="wrap_content"
            android:background="@drawable/icon1"/>

<TextView 

  android:id="@+id/myTitle" 
  android:text="This is my new title" 
  android:layout_width="fill_parent" 
  android:layout_height="fill_parent" 
  android:textColor="@color/titletextcolor"
   />
</LinearLayout>

TitleBar.java

public class TitleBar extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        final boolean customTitleSupported = 
                requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
        setContentView(R.layout.main);
        if (customTitleSupported) {
            getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE,
                R.layout.titlebar);
        }
        final TextView myTitleText = (TextView) findViewById(R.id.myTitle);
        if (myTitleText != null) {
            myTitleText.setText("NEW TITLE");
            // user can also set color using "Color" and then
            // "Color value constant"
            // myTitleText.setBackgroundColor(Color.GREEN);
        }
    }
}

strings.xml

Файл strings.xml определяется в папке values.

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="hello">Hello World, Set_Text_TitleBar!</string>
    <string name="app_name">Set_Text_TitleBar</string>
    <color name="titlebackgroundcolor">#3232CD</color>
    <color name="titletextcolor">#FFFF00</color>
</resources>

Ответ 2

Вы можете определить метку для каждого действия в вашем файле манифеста.

Нормальное определение активности выглядит следующим образом:

<activity
     android:name=".ui.myactivity"
     android:label="@string/Title Text" />

Если текст заголовка должен быть заменен идентификатором ресурса строки для этого действия.

Вы также можете установить текст заголовка из кода, если вы хотите установить его динамически.

setTitle(address.getCity());

с этой строкой заголовок устанавливается в город определенного адреса в методе oncreate моей активности.

Ответ 3

Вы можете определить свой заголовок программно с помощью setTitle в пределах Activity, этот метод может принять либо String, либо идентификатор, определенный в вашем файле values/strings.xml. Пример:

public class YourActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {

        setTitle(R.string.your_title);
        setContentView(R.layout.main);

    }
}

Ответ 4

Мы можем изменить заголовок ActionBar одним из двух способов:

  • В манифесте: в файле манифеста установите метку каждого действия.

    android:label="@string/TitleWhichYouWantToDisplay"
    
  • В коде: в коде вызовите метод setTitle() с помощью String или идентификатор строки в качестве аргумента.

    public class MainActivity extends Activity {
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
    
            setTitle(R.string.TitleWhichYouWantToDisplay);
            // OR You can also use the line below
            // setTitle("MyTitle")
            setContentView(R.layout.activity_main);
    
        }
    }
    

Ответ 5

Внутри вызова Activity.onCreate() или в другом месте, где вам нужно изменить название:

getSupportActionBar().setTitle("Whatever title");

Ответ 6

попробуйте сделать это...

public void onCreate(Bundle savedInstanceState) 
{
super.onCreate(savedInstanceState);
    this.setTitle(String.format(your_format_string, your_personal_text_to_display));
    setContentView(R.layout.your_layout);
       ...
       ...
}

он работает для меня

Ответ 7

Немного старше, но с той же проблемой. Я сделал это так:

strings.xml

<string name="title_awesome_app">My Awesome App</string>

и убедитесь, что вы установили это в своем AndroidManifest.xml:

<activity
            ...
            android:label="@string/title_awesome_app" >
            ...
</activity>

это легко, и вам не нужно беспокоиться о нулевых ссылках и других материалах.

Ответ 8

getActionBar().setTitle("edit your text"); 

Ответ 9

Самый простой способ изменить название панели действий - перейти в AndroidManifest.xml и ввести этот код.

<activity android:name=".MainActivity"
    android:label="Your Label> </activity>

Ответ 10

Вы просто добавляете этот код в метод onCreate.

setTitle("new title");

Ответ 11

ActionBar ab = getActionBar();
TextView tv = new TextView(getApplicationContext());

LayoutParams lp = new RelativeLayout.LayoutParams(
        LayoutParams.MATCH_PARENT, // Width of TextView
        LayoutParams.WRAP_CONTENT);
tv.setLayoutParams(lp);
tv.setTextColor(Color.RED);
ab.setCustomView(tv);

Для получения дополнительной информации проверьте эту ссылку:

http://android--code.blogspot.in/2015/09/android-how-to-change-actionbar-title_21.html

Ответ 12

Лучший способ изменить название панели действий - перейти на AndroidManifest.xml и введите этот код.

<activity android:name=".YourActivity"
        android:label="NameYouWantToDisplay> </activity>

Ответ 13

как насчет эффекта кнопки и флажка в представлении после принятия настраиваемой строки заголовка? В моем приложении стиль кнопки и флажок изменились. вы можете ссылаться на мой пост здесь

Ответ 14

Самый простой способ - вызвать this.setTitle("...") если вы находитесь в this.setTitle("..."). А если вы находитесь во фрагменте, просто вызовите getActivity().setTitle("...");

Этот способ позволит вам изменить заголовок в любое время, не нужно вызывать его перед setContentView(R.layout.activity_test);

Ответ 15

Для будущих разработчиков, которые используют AndroidX и архитектурный компонент навигации.

Вместо того чтобы устанавливать заголовок панели инструментов с помощью одного из приведенных выше решений, что может быть очень болезненным, если вы хотите установить его динамически при изменении заднего стека, вы можете установить заполнитель для заголовка фрагмента на графике навигации, как показано ниже:

<fragment
    android:id="@+id/some_fragment"
    android:name="package.SomeFragment"
    android:label="Hello {placeholder}"
    tools:layout="@layout/fragment_some">
    <argument
        android:name="placeholder"
        app:argType="string" />
</fragment>

Значение заполнителя должно быть предоставлено с использованием FragmentDirections (через метод действия).

Затем он заменяется в заголовке и отображается как Hello World (когда placeholder = "World").

Ответ 16

getSupportActionBar().setTitle("title");