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


225

Я пытаюсь сделать некоторые вещи на ActionBar в Android.

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

Как я могу изменить левую сторону панели действий? Я хочу изменить значок и текст, а также добавить кнопку «Назад» на панели действий для других экранов.

Панель действий Android

Ответы:


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 или выше, если вы просто хотите использовать функциональность кнопки «Назад» в старых, а также новых API, которые вам просто необходимыgetActionBar().setDisplayHomeAsUpEnabled(true)
Акшат Агарвал,

3
getSupportActionBar (). setDisplayShowTitleEnabled (true); перед setTitle ("123");
Жозе Мануэль Абарка Родригес

Если вы используете код getActionBar (). SetIcon (R.drawable.my_icon); Вы можете сделать это кликабельным?
Скитти

1
@ JoseManuelAbarcaRodríguez Спасибо, вот чего мне не хватало. В Котлине: supportActionBar?.setDisplayShowTitleEnabled(true)тогда supportActionBar?.title = "your title". И это должно быть сделано в onResume, а не в onCreate, при создании деятельности с startActivity.
Эрик Ая

18

Чтобы сделать один значок доступным для всех ваших панелей действий, вы можете сделать это в своем манифесте Android.

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

    ...

</application>

1
спасибо - я хотел другой значок для внешнего приложения (как видно из «Все приложения») и другой значок в левой части панели действий. И это сработало. В файле манифеста все еще есть android: icon = "@ drawable / 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 () вашего Activity

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>

Ява:

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> values> 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.