Изменение цвета значка панели навигации на 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 или выше получат белый навигатор с темными кнопками.

Ответ 3

Из того, что я могу сказать, эти значки являются частью com.android.systemui, поэтому вам нужно использовать root + patch или injection (например, Xposed), чтобы иметь возможность их изменять.

Рассмотрим это с другой точки зрения. Одна из возможностей может заключаться в том, чтобы тема для этой активности была светлой или темной, а затем программно устанавливала цвет фона на панели. Одна из этих тем должна иметь темные значки.

Другой альтернативой может быть скрыть панель вообще https://developer.android.com/training/system-ui/navigation.html

а затем создайте вторую панель инструментов внизу своими собственными кнопками.