Я обновил свой SDK до API 21, и теперь значок возврата / вверх - черная стрелка, указывающая влево.
Я хотел бы, чтобы это было серым. Как я могу это сделать?
Например, в магазине Play Store стрелка белого цвета.
Я сделал это, чтобы установить некоторые стили. Я использовал @drawable/abc_ic_ab_back_mtrl_am_alpha
для homeAsUpIndicator
. Этот чертеж является прозрачным (только альфа), но стрелка отображается черным цветом. Интересно, смогу ли я установить цвет, как я делаю в DrawerArrowStyle
. Или, если единственным решением является создание моего @drawable/grey_arrow
и использовать его для homeAsUpIndicator
.
<!-- Base application theme -->
<style name="AppTheme" parent="Theme.AppCompat.Light">
<item name="android:actionBarStyle" tools:ignore="NewApi">@style/MyActionBar</item>
<item name="actionBarStyle">@style/MyActionBar</item>
<item name="drawerArrowStyle">@style/DrawerArrowStyle</item>
<item name="homeAsUpIndicator">@drawable/abc_ic_ab_back_mtrl_am_alpha</item>
<item name="android:homeAsUpIndicator" tools:ignore="NewApi">@drawable/abc_ic_ab_back_mtrl_am_alpha</item>
</style>
<!-- ActionBar style -->
<style name="MyActionBar" parent="@style/Widget.AppCompat.Light.ActionBar.Solid">
<item name="android:background">@color/actionbar_background</item>
<!-- Support library compatibility -->
<item name="background">@color/actionbar_background</item>
</style>
<!-- Style for the navigation drawer icon -->
<style name="DrawerArrowStyle" parent="Widget.AppCompat.DrawerArrowToggle">
<item name="spinBars">true</item>
<item name="color">@color/actionbar_text</item>
</style>
Мое решение до сих пор заключалось в том @drawable/abc_ic_ab_back_mtrl_am_alpha
, чтобы взять то , что кажется белым, и нарисовать его в желаемом цвете с помощью фоторедактора. Это работает, хотя я бы предпочел использовать @color/actionbar_text
как в DrawerArrowStyle
.
источник
homeAsUpIndicator
/,@drawable/abc_ic_ab_back_mtrl_am_alpha
чтобы сделать стрелку назад белым. Я предпочитаю это, чем взломать Java.Ответы:
Вы можете достичь этого с помощью кода. Получите стрелку «Назад», измените ее цвет с помощью фильтра и установите ее в качестве кнопки «Назад».
Редакция 1:
Начиная с API 23 (Marshmallow) изменяемый ресурс
abc_ic_ab_back_mtrl_am_alpha
изменяется наabc_ic_ab_back_material
.РЕДАКТИРОВАТЬ:
Вы можете использовать этот код для достижения желаемых результатов:
источник
ContextCompat.getDrawable(this, R.drawable.abc_ic_ab_back_mtrl_am_alpha)
потому чтоgetResources.getDrawable(int)
устарелаГлядя на
Toolbar
иTintManager
источник,drawable/abc_ic_ab_back_mtrl_am_alpha
окрашена со значением атрибута стиляcolorControlNormal
.Я попытался установить это в своем проекте (с
<item name="colorControlNormal">@color/my_awesome_color</item>
моей темой), но он все еще черный для меня.Обновление :
Нашел это. Вы должны установить
actionBarTheme
атрибут ( неactionBarStyle
) с помощьюcolorControlNormal
.Например:
источник
colorControlNormal
корневой теме, а не к,actionBarTheme
- это путь.Перепробовал все предложения выше. Единственный способ, которым мне удалось изменить цвет значка навигации по умолчанию - кнопка со стрелкой «Назад» на моей панели инструментов - это установить colorControlNormal в базовой теме следующим образом. Вероятно, из-за того, что родитель использует Theme.AppCompat.Light.NoActionBar
источник
style.xml
colorControlNormal
это не с префиксомandroid:
.Необходимо добавить один атрибут в тему панели инструментов -
Примените эту toolbar_theme к вашей панели инструментов.
ИЛИ
Вы можете напрямую обратиться к своей теме -
источник
Просто добавь
к вашей текущей теме приложения.
источник
если использовать
Toolbar
, вы можете попробовать этоисточник
Как сказано в большинстве предыдущих комментариев, решение состоит в том, чтобы добавить
<item name="colorControlNormal">@color/white</item>
в тему вашего приложения. Но убедитесь, что у вас нет другой темы, определенной в элементе панели инструментов в макете.источник
Ответ Карлеса является правильным, но некоторые методы, такие как getDrawable (), getColor (), устарели во время написания этого ответа . Таким образом, обновленный ответ будет
Следуя другим запросам stackoverflow, я обнаружил, что вызов ContextCompat.getDrawable () похож на
И ContextCompat.getColor () похож на
Ссылка 1: ContextCompat.getDrawable ()
Ссылка 2: ContextCompat.getColor ()
источник
abc_ic_ab_back_material
, а неabc_ic_ab_back_mtrl_am_alpha
.Я нашел решение, которое работает до Lollipop. Установите «colorControlNormal» в «actionBarWidgetTheme», чтобы изменить цвет homeAsUpIndicator. Измените ответ Rockgecko сверху, чтобы он выглядел так:
источник
На compileSdkVersoin 25 вы можете сделать это:
styles.xml
источник
Используйте метод ниже:
Теперь вы можете установить рисование с помощью:
источник
Изменить цвет значка меню навигации
В style.xml:
источник
Другое решение, которое может работать для вас, состоит в том, чтобы не объявлять вашу панель инструментов как панель действий приложения (с помощью
setActionBar
илиsetSupportActionBar
) и устанавливать значок возврата в вашем onActivityCreated, используя код, упомянутый в другом ответе на этой странице.Теперь вы не получите
onOptionItemSelected
обратный вызов при нажатии кнопки возврата. Тем не менее, вы можете зарегистрироваться для этого, используяsetNavigationOnClickListener
. Вот что я делаю:Я не уверен, будет ли это работать, если вы работаете с пунктами меню.
источник
Мы столкнулись с той же проблемой, и все, что мы хотели, это установить
Приложение: collapseIcon
атрибут на панели инструментов в конце концов, который мы не нашли, так как он не очень хорошо задокументирован :)
источник
попробуй это
вызов функции:
источник
Вот что сработало для меня:
Добавьте следующие атрибуты к вашей теме.
Чтобы изменить панель инструментов / панель действий назад стрелка над API 21
Чтобы изменить панель инструментов / панель действий назад стрелка ниже API 21
Для изменения режима действия стрелка назад
Чтобы удалить тень панели инструментов / панели действий
Чтобы изменить рисование переполнения панели действий
Примечание: вместо «android: src» используется «srcCompat» из-за поддержки векторного рисования для API ниже 21
источник
Решение очень простое
Просто поместите следующую строку в свой стиль, названный AppTheme
Теперь весь ваш xml-код будет выглядеть так, как показано ниже (стиль по умолчанию).
источник
Я просто изменил тему панели инструментов на @ style / ThemeOverlay.AppCompat.Light
и стрелка стала темно-серой
источник
Вот как я это сделал в Материальных Компонентах:
источник
Вы можете изменить цвет значка навигации программно следующим образом:
источник
Просто удалите
android:homeAsUpIndicator
иhomeAsUpIndicator
из вашей темы и все будет хорошо.color
Атрибут в вашемDrawerArrowStyle
стиле должно быть достаточно.источник
color
атрибута). Стрелка ящика немного больше.Если нет лучшего решения ...
Я взял
@drawable/abc_ic_ab_back_mtrl_am_alpha
изображения, которые кажутся белыми, и покрасил их в нужный мне цвет с помощью фоторедактора.источник