это не совсем тот ответ, который вы искали, но, поскольку я пытался сделать то же самое, но безуспешно, я нашел обходной путь, поэтому, сделав ваши темы в styles.xml наследующими от компонентов материала (если они неСовершенно верно, вы можете использовать .bridge, чтобы сделать их более похожими на темы appcompat) вы можете изменить фон нижней навигации, например, моя желтая тема
<style name="MyAppYellowTheme" parent="Theme.MaterialComponents.Light.Bridge">
<item name="colorPrimary">@color/primary_yellow</item>
<item name="colorPrimaryDark">@color/primary_dark_yellow</item>
<item name="colorAccent">@color/accent_yellow</item>
<item name="android:textColorPrimary">@color/primary_text_yellow</item>
<item name="android:colorBackground">@color/background_light</item>
<item name="tabLayoutStyle">@style/Yellow.TabLayout</item>
</style>
сделает мой нижний фон навигации цвет = colorPrimary, еслия добавляю к нему стиль материала, подобный этому
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/navigation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@style/Widget.MaterialComponents.BottomNavigationView.Colored"
app:layout_constraintBottom_toBottomOf="parent"
app:menu="@menu/navigation" />
Существуют различные версии этого стиля, которые можно найти здесь , это работает, но вам все равно нужно будет что-то сделать для значков итекст, поэтому у меня есть оператор переключения и в зависимости от цвета (темный или светлый) я переключаю список состояний цвета следующим образом
ColorStateList colorStateList = getBottomNavColor(theme, getActivity());
navigationView.setItemIconTintList(colorStateList);
navigationView.setItemTextColor(colorStateList);
getBottomNavController
private ColorStateList getBottomNavColor(String theme, Context context){
switch (theme) {
case Constants.THEME_BLUE:
return ContextCompat.getColorStateList(context,R.drawable.bottom_nav_selector_blue);
case Constants.THEME_YELLOW:
return ContextCompat.getColorStateList(context,R.drawable.bottom_nav_selector_yellow);
case Constants.THEME_GREEN:
return ContextCompat.getColorStateList(context,R.drawable.bottom_nav_selector_green);
case Constants.THEME_RED:
return ContextCompat.getColorStateList(context,R.drawable.bottom_nav_selector_red);
case Constants.THEME_PURPLE:
return ContextCompat.getColorStateList(context,R.drawable.bottom_nav_selector_purple);
case Constants.THEME_PINK:
return ContextCompat.getColorStateList(context,R.drawable.bottom_nav_selector_pink);
}
return ContextCompat.getColorStateList(context,R.drawable.bottom_nav_selector_blue);
}
опять не то, что вы или я искали, но работает и может быть хуже, надеюсь, это поможет