Как настроить кнопку «Назад» на панели действий - PullRequest
185 голосов
/ 13 февраля 2012

Мне удалось настроить фон панели действий, изображение логотипа и цвет текста, используя следующие рекомендации:
Android: как изменить значок «Домой» панели действий, чтобы он отличался от значка приложения?
Цвет текста ActionBar
Фоновое изображение ActionBar

Последнее, что я хочу настроить, - это изображение кнопки «Назад».По умолчанию он серый, и мне бы хотелось, чтобы он был белым.Сработает либо изменение цвета, указание рисунка или просто его прозрачность (и добавление шеврона к моему настроенному изображению с логотипом).Как мне это сделать?

Ответы [ 9 ]

384 голосов
/ 13 февраля 2012

Индикатор «вверх» предоставлен ничьей, указанной в атрибуте homeAsUpIndicator темы. Чтобы переопределить его собственной пользовательской версией, это будет примерно так:

<style name="Theme.MyFancyTheme" parent="android:Theme.Holo">
    <item name="android:homeAsUpIndicator">@drawable/my_fancy_up_indicator</item>
</style>

Если вы поддерживаете pre-3.0 с вашим приложением, убедитесь, что вы поместили эту версию пользовательской темы в values-v11 или аналогичную.

86 голосов
/ 14 февраля 2015

Таким образом, вы можете легко изменить его программно, используя функцию homeAsUpIndicator (), которая добавлена ​​в Android API уровня 18 и выше.

ActionBar().setHomeAsUpIndicator(R.drawable.ic_yourindicator);

Если вы используете библиотеку поддержки

getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_yourindicator);

30 голосов
/ 30 декабря 2013

Я проверил вопрос. Вот шаги, которым я следую. Исходный код размещен на GitHub: https://github.com/jiahaoliuliu/sherlockActionBarLab

Переопределить фактический стиль для устройств до v11.

Скопируйте и вставьте следующий код в файл styles.xml папки значений по умолчанию.

<resources>
    <style name="MyCustomTheme" parent="Theme.Sherlock.Light">
    <item name="homeAsUpIndicator">@drawable/ic_home_up</item>
    </style>
</resources>

Обратите внимание, что родитель может быть заменен на любую тему Шерлока.

Переопределить фактический стиль для устройств v11 +.

В той же папке, где находятся значения папок, создайте новую папку под названием values-v11. Android будет автоматически искать содержимое этой папки для устройств с API или выше.

Создайте новый файл с именем styles.xml и вставьте в него следующий код:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="MyCustomTheme" parent="Theme.Sherlock.Light">
    <item name="android:homeAsUpIndicator">@drawable/ic_home_up</item>
    </style>
</resources>

Обратите внимание, что имя стиля должно совпадать с именем файла в папке значений по умолчанию, и вместо элемента homeAsUpIndicator он называется android: homeAsUpIndicator.

Проблема заключается в том, что для устройств с API 11 или выше Sherlock Action Bar использует панель действий по умолчанию, поставляемую с Android, и ее ключ называется android: homeAsUpIndicator. Но для устройств с API 10 или ниже Sherlock Action Bar использует свой собственный ActionBar, который в качестве индикатора «вверх по дому» называется простым «homeAsUpIndicator».

Использовать новую тему в манифесте

Заменить тему для приложения / действия в файле AndroidManifest:

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/MyCustomTheme" >
25 голосов
/ 18 ноября 2015

Изменение назад значка навигации отличается для ActionBar и панели инструментов.

Для переопределения ActionBar homeAsUpIndicator атрибут:

<style name="CustomThemeActionBar" parent="android:Theme.Holo">
    <item name="homeAsUpIndicator">@drawable/ic_nav_back</item>
</style>

Для переопределения панели инструментов navigationIcon Атрибут:

<style name="CustomThemeToolbar" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="navigationIcon">@drawable/ic_nav_back</item>
</style>
19 голосов
/ 19 октября 2015

Я сделал следующий код onCreate() и работал со мной

getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_yourindicator);
5 голосов
/ 01 апреля 2015

Если вы используете панель инструментов, вам не нужны эти решения. Вам нужно только изменить тему панели инструментов

app:theme="@style/ThemeOverlay.AppCompat.Light"

app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"

Если вы используете dark.actionBar, кнопка «Назад» будет белой, в противном случае, если вы используете светлую тему панели инструментов, она будет черной.

2 голосов
/ 11 апреля 2019

лоток это:

getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_close);

внутри onCreate();

0 голосов
/ 23 августа 2017

У меня была та же проблема направления значка кнопки «Домой» на панели действий, из-за отсутствия управления значком в значке каталога ресурсов Gradle

, как в каталоге ресурсов арабского языка Gradle, вы помещаете значок в x-hdpi и на английском языке.Ресурс Gradle с тем же именем значка, которое вы поместили в папку с различной плотностью, например, xx-hdpi, так что в APK будут два одинаковых имени значка в разных каталогах, поэтому ваше устройство будет выбирать значок, зависящий от плотности, может быть RTL или LTR

0 голосов
/ 27 ноября 2015

Я использовал изображение back.png в файле проекта menifest.xml. отлично работает в проекте.

<activity
        android:name=".YourActivity"
         android:icon="@drawable/back"
        android:label="@string/app_name" >
    </activity>
...