Как настроить кнопку назад на панели действий


Я смог настроить фон панели действий, изображение логотипа и цвет текста, используя предложения из этих:
Android: Как изменить значок ActionBar "Home" на что-то другое, кроме значка приложения?
Цвет текста панели действий
фоновое изображение ActionBar

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

8 182

8 ответов:

Индикатор доступности "вверх" обеспечивается рисованием, указанным в атрибуте 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 или аналогичную.

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

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

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

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

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

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

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

<resources>
    <style name="MyCustomTheme" parent="Theme.Sherlock.Light">
    <item name="homeAsUpIndicator">@drawable/ic_home_up</item>
    </style>
</resources>
Обратите внимание, что родитель может быть изменен на любую тему Шерлока.

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

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

Создайте новый файл под названием стили.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, который home as up indicator называется простым "homeAsUpIndicator".

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

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

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/MyCustomTheme" >

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

Для переопределения панели действий 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>

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

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

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

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

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

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

Я использовал назад.png изображение в проекте menifest.XML-файл. это прекрасно работает в проекте.

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

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

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