Як змінити назву та значок панелі дій Android


225

Я намагаюся зробити деякі дії на ActionBar в Android.

Я вже додав нові елементи в правій частині панелі дій.

Як я можу змінити ліву частину панелі дій? Я хочу змінити піктограму та текст, і я хочу додати "Кнопку Назад" на панелі дій для інших екранів

Android Action Bar

Відповіді:


514

Це дуже просто здійснити

Якщо ви хочете змінити його в коді, зателефонуйте:

setTitle("My new title");
getActionBar().setIcon(R.drawable.my_icon);

І встановіть значення на що завгодно.

Або у файлі XML-маніфесту Android:

<activity android:name=".MyActivity" 
       android:icon="@drawable/my_icon" 
       android:label="My new title" />  

Щоб увімкнути кнопку "Назад" у вашому додатку, використовуйте:

 getActionBar().setHomeButtonEnabled(true);
 getActionBar().setDisplayHomeAsUpEnabled(true);

Код повинен бути розміщений у вашому, onCreateщоб мітка / значок змінювалися прозорими для користувача, але насправді його можна викликати в будь-якому місці протягом життєвого циклу діяльності.


23
Якщо ви використовуєте бібліотеку підтримки для додавання панелі дій, використовуйте getSupportActionBarзамість getActionBar.
Рік Пастор

3
getActionBar().setHomeButtonEnabled(true)використовує API рівня 14 або вище, якщо ви просто хочете функціонувати кнопки повернення як у старих, так і в нових, які вам просто потрібніgetActionBar().setDisplayHomeAsUpEnabled(true)
Akshat Agarwal

3
getSupportActionBar (). setDisplayShowTitleEnabled (вірно); перед setTitle ("123");
Хосе Мануель Абарка Родрігес

Якщо ви використовуєте код getActionBar (). SetIcon (R.dravable.my_icon); ви можете зробити його клікабельним?
Скітті

1
@ JoseManuelAbarcaRodríguez Спасибі, саме цього мені не вистачало. У Котліні: supportActionBar?.setDisplayShowTitleEnabled(true)тоді supportActionBar?.title = "your title". І це потрібно робити в onResume, а не в процесі onCreateстворення діяльності з startActivity.
Ерік Айя

18

Щоб зробити одну піктограму корисною для всіх ваших панелей дій, ви можете це зробити у своєму Android Manifest.

<application
    android:logo="@drawable/Image">

    ...

</application>

1
спасибі - я хотів отримати іншу піктограму поза додатком (як це показано у "Усі додатки") та іншу піктограму зліва від панелі дій. І це спрацювало. У файлі Manifest все ще є android: icon = "@ dravable / ic_launcher"
flobacca

2
Це правильний шлях, оскільки pre-loadsзначок піктограм, програмних налаштувань повільно!
Мухаммад Бабар

11

Вам просто потрібно додати ці 3 рядки коду. Замініть її на власну. Якщо ви хочете генерувати іконки, використовуйте це

getSupportActionBar().setHomeAsUpIndicator(R.drawable.icon_back_arrow);
getActionBar().setHomeButtonEnabled(true);
getActionBar().setDisplayHomeAsUpEnabled(true);

11

В інструкціях щодо дизайну матеріалів Android 5.0 відмовляють від використання піктограми в ActionBar

щоб увімкнути його, додайте наступний код

getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setLogo(R.mipmap.ic_launcher);
getSupportActionBar().setDisplayUseLogoEnabled(true);

заслуга належить автору цієї статті


9

Якщо ви хочете змінити назву рядка дій, просто введіть наступний 1 рядок у onCreate () вашої діяльності

getActionBar().setTitle("Test");

Як я можу оживити цю зміну заголовка?
Шрікар Редді

7

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

android:icon="@drawable/ic_launcher"

щоб відповідати тому, що там є назва вашої іконки. Або поставте ваш значок як ic_launcher, якщо вони однакові. Що стосується того, що він говорить, додайте або змініть будь-які рядки, які відповідають цьому, у вашому файлі res / values ​​/ strings.xml. Потім знову в файлі AndroidManifest.xml змініть цей рядок:

android:label="@string/app_name"

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

Сподіваюсь, це допомагає.


Якого розміру (dp) повинен бути цей android:iconтег діяльності?
cuddlecheek


5

Для цього ви можете це зробити двома способами: XML або Java. Дивіться тут: Як змінити текст на панелі дій

Так:

XML:

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

Java:

public class TitleBar extends Activity {
/** Called when the activity is first created. */
@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);
       }
 }
}

2
Для того, щоб зробити це з коду, ви повинні зателефонувати setTitle(CharSequence text)або setTitle(int titleRes). Не використовуйте, requestWindowFeature(Window.FEATURE_CUSTOM_TITLE)якщо ви не плануєте замінити весь рядок заголовка на власний власний перегляд.
Каракурі


2

Я використовував такий дзвінок всередині onNavigationItemSelected:

HomeActivity.this.setTitle(item.getTitle());


1

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

getActionBar().setHomeButtonEnabled(true);
getActionBar().setDisplayHomeAsUpEnabled(true);
getActionBar().setHomeAsUpIndicator(R.mipmap.baseline_dehaze_white_24);

0

Заголовок рядка дій за замовчуванням використовує мітку поточної активності, але ви також можете встановити її програмно через ActionBar.setTitle() .

Щоб реалізувати функцію кнопки «Назад» (точніше - «Вгору»), про яку ви говорите, прочитайте розділ «Використання піктограми додатка для навігації» в посібнику для розробників панелі дій. .

Нарешті, щоб змінити іконку, посібник також охоплює це. Коротше кажучи, на панелі дій відображатиметься зображення, надане android:iconу вашому маніфесті applicationчи activityелементі, якщо воно є. Типова практика полягає у створенні піктограми програми (у всіх різних густинах, які вам знадобляться) з назвою ic_launcher.pngта розміщення її у своїх drawable-*каталогах.


0

Я отримав non-static method setTitle(CharSequence) cannot be referenced from a static contextпомилку, оскільки використовував setTitle()у статичному класі PlaceholderFragment. Я вирішив це за допомогоюgetActivity().getActionBar().setTitle("new title");


0

Перейдіть до маніфесту, в якому конкретної діяльності ви хочете змінити Ім'я заголовка і записати android: label = "Назва назви"


0

Перейдіть у файл AndroidManifest.xml . Знайдіть <application>тег Там ви можете побачити атрибут

android:label="@string/app_name"

Тепер перейдіть до res> значень> strings.xml

Змінити

<string name="app_name">MainActivity</string> 

до

<string name="app_name">Your Desired Name</string>

Приклад

AndroidManifest.xml

<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>
        <activity android:name=".SubmitForm">

        </activity>
    </application>

strings.xml

<resources>
    <string name="app_name">Your Desired Name</string>
    <string name="action_settings">Settings</string>
</resources>

0

Ви також можете зробити так:

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main2)
        setSupportActionBar(toolbar)
        setTitle("Activity 2")
    }
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.