Я работаю над переносом существующей действующей панели действий на Toolbar
, и у меня возникла небольшая проблема. Обычно я хочу иметь значок навигации со стандартной белой стрелкой назад. Однако в некоторых случаях я хочу изменить эту стрелку на серый. Для этого я делаю следующее.Цвет панели инструментов AppCompatControlNormal получает кеширование
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="?actionBarSize"
android:background="?titlebarBackground"
style="?actionBarStyle"
app:navigationIcon="@drawable/action_bar_up_arrow"
app:theme="?toolbarTheme"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
обычно я поставил ?toolbarTheme
просто быть @style/ThemeOverlay.AppCompat.Dark.ActionBar
. Затем, когда я хочу иметь стрелку серого стрелки, я задаю тему.
<style name="ThemeOverlay.AppCompat.Dark.ActionBar.GrayControls">
<item name="colorControlNormal">@color/gray</item>
</style>
Это изначально работает безупречно, а стрелка вверх - серая. Однако, когда я возвращаюсь, этот серый цвет по-прежнему сохраняется для стрелок вверх всех действий, которые были на заднем стеке. Если я открою новый Activity
, стрелка будет изменена на белый, но для всех предыдущих действий их стрелка установлена на серый.
Мой вопрос имеет два аспекта:
- Почему это происходит?
- Каков наилучший способ исправить это?
Одно маленькое дополнение к этому: в чтобы сделать эту работу с e standard icon (R.drawable.abc_ic_ab_back_mtrl_am_alpha) Мне нужно обновить оттенок значка с помощью TintManager.getDrawable() в 'onRestart'. Я не большой поклонник этого, учитывая, что TintManager находится во внутреннем пакете; есть ли какой-либо путь вокруг этого? – Jonathan
@Jonathan Проверьте https://code.google.com/p/android/issues/detail?id=78289. Похоже, он исправлен, но еще не выпущен. –