Изменение цвета значка панели навигации на Android
Мне нужно изменить панель навигации на Android. Так же, как "легкий" вариант справа на изображении ниже
как указано в https://www.google.co.in/design/spec/layout/structure.html#structure-system-bars.
Теперь я могу изменить фон панели навигации, используя
"android:navigationBarColor"
Я получаю
![введите описание изображения здесь]()
но, похоже, не меняется цвет кнопки в темном.
У кого-то есть идея, как это сделать.
PS:
Во время исследования в AOSP для классов, ответственных за NavigationButtons, я мог найти NavigationBarView.java, PhoneStatusBar.java, PhoneWindowManager.java, navigation_bar.xml.
Я думал о том, как получить ссылку на кнопки навигации, такие как ic_sysbar_recent
, и изменить их оттенок. Но они частные, и я не могу получить их ссылку.
Кроме того, я видел людей, использующих библиотеку xposed, чтобы сделать это L-NAVBAR, но я не хочу использовать внешнюю библиотеку.
Ответы
Ответ 1
Если вы используете API 27 (Android 8.1) или выше, вы можете достичь этого в своей теме:
<item name="android:windowLightNavigationBar">true</item>
Вы можете создать папку с именем values-v27 и поместить версию своей темы (в styles.xml) с легкой навигационной панелью и приведенным выше кодом, чтобы получить темные кнопки панели навигации.
Таким образом, пользователи с Android 8.0 или ниже получат стандартную (черную) навигационную панель, а пользователи с Android 8.1 или выше получат белый навигатор с темными кнопками.
Ответ 2
Начиная с Android O, он становится очень простым, как вы могли:
View.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
Чтобы это вступило в силу, окно должно запросить FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS, но не FLAG_TRANSLUCENT_NAVIGATION.
Документация: https://developer.android.com/reference/android/view/View.html#SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR
Ответ 3
Из того, что я могу сказать, эти значки являются частью com.android.systemui, поэтому вам нужно использовать root + patch или injection (например, Xposed), чтобы иметь возможность их изменять.
Рассмотрим это с другой точки зрения. Одна из возможностей может заключаться в том, чтобы тема для этой активности была светлой или темной, а затем программно устанавливала цвет фона на панели. Одна из этих тем должна иметь темные значки.
Другой альтернативой может быть скрыть панель вообще
https://developer.android.com/training/system-ui/navigation.html
а затем создайте вторую панель инструментов внизу своими собственными кнопками.