Як змінити текст на панелі дій


230

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

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

Відповіді:


358

Оновлення: останній шаблон дій (назва):

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

Я точно пам’ятаю про налаштування рядка заголовка та його послідовність за допомогою програми. Тож я можу порівняти з попередніми днями та перелічити деякі переваги використання ActionBar:

  1. Він пропонує вашим користувачам знайомий інтерфейс через додатки, який система витончено адаптує для різних конфігурацій екрана.
  2. Розробникам не потрібно писати багато коду для відображення заголовка активності, піктограм та режимів навігації, оскільки ActionBar вже готовий до абстракції верхнього рівня.

Наприклад:

введіть тут опис зображення

введіть тут опис зображення

=> Звичайний спосіб,

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, то цей інструмент генератора стилів може допомогти вам.

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

Старий: Раніші дні:

=> Звичайний спосіб,

ви можете змінити заголовок кожного екрана (тобто активність), встановивши їх 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
Дотримуйтесь цього прикладу, щоб встановити власну назву в андроїді для активності або глобально для всього додатка: labs.makemachine.net/2010/03/custom-android-window-title
Paresh Mayani

1
+1! спасибі за це, але ви могли б сказати, чому андроїд: layout_width = "400px", до батьківського лінійного макета?
квінстор

2
@quinestor так, ви можете використовувати "wrap_content" або "fill_parent", якщо хочете, це лише для прикладу.
Paresh Mayani

Які підказки для javascript?
плющ

1
Я б заперечував проти використання "px" замість незалежних одиниць, таких як "dp", тому що багато нових учнів навчаються набагато більше, ніж просто те, на що відповіли, намагаючись зламати код і отримати максимальну користь від нього.
Акшат Агарвал

107

Ви можете визначити мітку для кожної діяльності у вашому файлі маніфесту.

Нормальне визначення діяльності виглядає приблизно так:

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

Якщо текст заголовка повинен бути замінений ідентифікатором рядкового ресурсу для цієї діяльності.

Ви також можете встановити текст заголовка з коду, якщо ви хочете його динамічно встановити.

setTitle(address.getCity());

за допомогою цього рядка заголовок задається місту конкретної адреси у створеному методі моєї діяльності.


56

Ви можете визначити свою назву програмно, використовуючи 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);

    }
}

19

Ми можемо змінити назву ActionBar одним із двох способів:

  1. У Маніфесті: у файлі маніфесту встановіть мітку кожної діяльності.

    android:label="@string/TitleWhichYouWantToDisplay"
  2. В коді: у коді зателефонуйте методу 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);
    
        }
    }

16

Всередині Activity.onCreate () зворотного виклику або в іншому місці, де потрібно змінити назву:

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

5

спробуйте зробити це ...

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);
       ...
       ...
}

це працює для мене


3

Трохи старший, але мав таку ж проблему. Я зробив це так:

strings.xml

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

і переконайтеся, що ви встановили це у своєму AndroidManifest.xml :

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

це просто, і вам не доведеться турбуватися про нульові посилання та інші речі.



3

Найпростіший спосіб змінити назву рядка дій - це перейти на AndroidManifest.xml і ввести цей код.

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

2

Ви просто додаєте цей onCreateметод у метод.

setTitle("new title");

1
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


Ви можете використовувати getSupportActionBar (), якщо ви використовуєте AppCompatActivity
Хамід Вакіліян

1

Найкращий спосіб змінити назву рядка дій - це перейти на AndroidManifest.xml і ввести цей код.

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

1

Котлін

Це можна зробити програмно в Котліні таким чином. Ви просто ігноруєте його, якщо "supportActionBar" недійсний :

    supportActionBar?.setTitle(R.string.my_text)
    supportActionBar?.title = "My text"

Або таким чином. Він видає виняток, якщо "supportActionBar" є недійсним.

    supportActionBar!!.setTitle(R.string.my_text)
    supportActionBar!!.title = "My text"

0

Найпростіший спосіб - зателефонувати, this.setTitle("...")якщо ви перебуваєте в діяльності. А якщо ви знаходитесь у фрагменті, просто зателефонуйте getActivity().setTitle("...");

Цей спосіб дозволить вам змінити заголовок у будь-який час, не потрібно його називати раніше setContentView(R.layout.activity_test);


0

Для майбутніх розробників, які використовують 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").


0

getSupportActionBar().setTitle("title");


Відповіді, що стосуються лише коду, - це відповіді низької якості. Додайте трохи пояснень, чому це працює.
Таслім Осені
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.