Смена цвета иконки и текста в BottomNavigationView при смене темы Android
Есть чек бокс для переключения темы Андроид, пытаюсь менять цвет иконки и текста в BottomNavigationView, при смене чекбокса и темы соответственно. Есть один selector такого вида
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/control_active_tabbar" android:state_checked="true" />
<item android:color="@color/control_inactive_tabbar" />
</selector>
у самих цветов описанных в селекторе, есть описания для темной и светлой темы, но это все почему-то срабатывает через раз. Причем по логам, тема действительно меняется, а вот цвета для иконки и текста, приходят либо с текущей темы, и изредка с той на которую переключаешься. Может кто-нибудь с подобным сталкивался?
Ответы (1 шт):
Помог вот этот ответ, через AppCompatResources.getColorStateList - все значения color приходят корректно:
If your min SDK is 23 you don't need the compat API for obtaining colors. If you don't use theme attribute references in colors and don't plan change, use Context.getResources().getColor(int) or getColorStateList(int) as you're used to. It's marked deprecated but functionally it's OK. If you want to use theme attribute references in colors on API 23+ only, use ContextCompat.getColorStateList(Context, int). If you use AppCompat and want to be able to use theme attribute references on all versions of Android, use AppCompatResources.getColorStateList(Context, int).
Взят от сюда: ссылка