Как изменить заголовок и значок панели действий android
Я пытаюсь сделать некоторые вещи на ActionBar в Android.
Я уже добавил новые элементы в правой части панели действий.
Как я могу изменить левую сторону панели действий? Я хочу изменить значок и текст, и я хочу добавить "кнопку Назад" в панели действий для других экранов
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());
заголовок панели действий по умолчанию будет использовать метку текущего действия, но вы также можете установить его программно через 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);