2012-02-12 2 views
181

я смог настроить фон, изображение логотипа и цвет текста, используя предложения панели действий от них:
Android: How to change the ActionBar "Home" Icon to be something other than the app icon?
ActionBar text color
ActionBar background imageКак настроить кнопку назад на ActionBar

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

+1

нет кнопки BACK на панели действий. Кнопка BACK находится на системной панели или не отображается на экране (для устройств с кнопкой ЗАДАТЬ экран). – CommonsWare

+0

@CommonsWare, я не уверен, что вызывается «левый шеврон» в панели действий, но это тот, который я называю кнопкой «Назад». Я думаю, что ожидается замена физической кнопки возврата на устройствах Android в будущем. –

+12

Нет и нет. Это индикатор «вверх» (несмотря на ориентацию стрелки). Вы включаете его через 'setDisplayHomeAsUpEnabled()' на 'ActionBar'. Это специально ** НЕ ** предполагается просто «вернуться». Это означает, что нажатие значка приложения будет «вверх» иерархией, а не назад к предыдущему действию (также как кнопка BACK на системной панели). – CommonsWare

ответ

366

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

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

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

+0

, который сработал.спасибо Джейку! –

+10

работает для меня тоже. Я объявлял в стиле, установленном как мой ActionBarStyle, как в AOSP на github, но он не работал - выход из основной темы сделал трюк! +1 – Dori

+36

' @ drawable/my_fancy_up_indicator' не работал для меня, но ' @ drawable/my_fancy_up_indicator' did. Угадайте, что это версия Android версии –

29

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

Переопределите фактический стиль для устройств pre-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 или выше в Шерлок-панели действий используется панель действий по умолчанию, которая поставляется с Android, имя которой является андроид: homeAsUpIndicator. Но для устройств с API 10 или ниже Шерлок Action Bar использует свой собственный ActionBar, который индикатор дома как индикатор называется простым «homeAsUpIndicator».

Используйте новую тему в проявленном

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

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

И вы можете попробовать @ drawable/abc_ic_ab_back_holo_light или @ drawable/abc_ic_ab_back_holo_dark, если вы ищете уже имеющиеся голосные значки. –

80

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

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

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

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

+5

Если вы используете ящик, вы должны вызвать 'drawerToggle.setDrawerIndicatorEnabled (false);' перед изменением индикатора – Floss

+1

@Floss Спасибо, setDrawerIndicatorEnabled (false/true); решила мою проблему, чтобы установить домашнюю кнопку как последовательную «Назад» и (Открыть ящик/Закрыть ящик) на основе моих требований. –

+1

@Floss drawerToggle.setDrawerIndicatorEnabled (false); он работает для меня :) – Context

5

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

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

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

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

+0

Ваш код работает для меня, но можем ли мы изменить цвет этого индикатора? –

+2

colorControlNormal and android: textColor За это отвечают вторичные значения, но я не очень уверен, что еще эти значения также изменяются. Вы можете попробовать сами, указав эти значения в своей теме. –

+0

Я использую "app: theme =" @ style/ThemeOverlay.AppCompat.Light "" для отображения navigationIcon в фоновом режиме, но он отображает серый значок по умолчанию, мне нужно изменить его на синий. msgstr "colorControlNormal и android: textColorSecondary" не работает. –

15

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

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

Не забудьте очистить проект – jlopez

23

Изменение обратно навигации значок отличается для 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> 
0

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

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

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

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

Смежные вопросы