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

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

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

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

Android Action Bar

15 ответов


это очень просто сделать

если вы хотите изменить его в коде, позвоните:

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 Так что изменение метки / значка прозрачно для пользователя, но на самом деле его можно вызвать в любом месте во время действия жизненный цикл.


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

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

    ...

</application>

Если вы хотите изменить заголовок панели действий, просто дайте следующий код 1 строки в onCreate () вашего действия

getActionBar().setTitle("Test");

вам просто нужно добавить эти 3 строки кода. Замените значок своим собственным значком. Если вы хотите создать значки, используйте этой

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

вы можете изменить значок в вашем, добавив любой значок, который вы хотите, чтобы ваши соответствующие drawable папки, а затем изменить эту строку в вашем AndroidManifest.xml-файл:

android:icon="@drawable/ic_launcher"

чтобы соответствовать любому имени вашего значка там. Или поместите свой значок как ic_launcher,если они одинаковы. Что касается того, что он говорит, добавьте или измените любые строки, соответствующие этому в ваших res/values/strings.XML-файл. Затем, еще раз в ваш AndroidManifest.xml-файл, измените это строка:

android:label="@string/app_name"

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

надеюсь, что это помогает.


в Android 5.0 принципы материального дизайна препятствуют использованию значка в actionBar

чтобы включить его, добавьте следующий код

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

кредит идет автору этого статьи


для этого вы можете сделать это двумя способами: 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);
       }
 }
}

для set Title :

getActionBar().setTitle("Title");

для set Icon :

getActionBar().setIcon(R.drawable.YOUR_ICON_NAME);

ActionBar actionBar = getSupportActionBar();
actionBar.setTitle(getString(R.string.titolo));
actionBar.setIcon(R.mipmap.ic_launcher);
actionBar.setDisplayShowHomeEnabled(true);

я использовал следующий вызов внутри onNavigationItemSelected:

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

добавьте приведенный ниже код внутри функции onCreate в вашей деятельности.

setTitle("NewName");

заголовок панели действий по умолчанию будет использовать метку текущего действия, но вы также можете установить его программно через ActionBar.setTitle().

чтобы реализовать функциональность кнопки" Назад "(точнее," вверх"), о которой вы говорите, прочитайте раздел" Использование значка приложения для навигации"руководство разработчика панели действий.

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


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


перейти к Манифесту, в котором конкретное действие вы хотите изменить название заголовка панели действий и написать android: label= "название названия"


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

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