У меня есть простое BottomNavigationView, и я хочу получить эффект ряби, когда пункты меню в навигационном представлении касаются.Затем я хочу, чтобы фон выбранного пункта меню оставался таким же цветом, что и рябь, пока не будет выбран новый пункт меню.Я получил пульсацию без проблем на всех.Изменение цвета фона элемента меню оказывается довольно трудным делом.
Я вставил xml ниже моего текущего состояния с использованием пульсации.Что бы мне пришлось изменить, чтобы потом сохранить цвет пульсации?
Я пробовал селектор с пульсацией, который меняет цвет фона в зависимости от состояния checked
.Это, казалось, сломало всю окраску выбора.Я попытался удалить рябь и иметь только селектор состояния checked
.Очевидно, что пульсация исчезла.
в activity_main.xml
:
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/navigation_bottom"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:menu="@menu/bottom_navigation_menu"
app:labelVisibilityMode="labeled"
style="@style/BottomNavigation"/>
в styles.xml
:
<style name="BottomNavigation">
<item name="android:background">@color/colorBottomTabUnselected</item>
<item name="itemBackground">@drawable/navigation_bar_item_ripple</item>
<item name="itemIconTint">@color/navigation_bar_txt_color</item>
<item name="itemTextColor">@color/navigation_bar_txt_color</item>
<item name="paddingStart">@dimen/bottom_navigation_padding</item>
<item name="paddingEnd">@dimen/bottom_navigation_padding</item>
</style>
в navigation_bar_item_ripple.xml
:
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="@color/colorBottomTabSelected">
<item android:id="@android:id/mask">
<shape android:shape="rectangle">
<solid android:color="@color/colorBottomTabSelected"/>
</shape>
</item>
<item>
<shape android:shape="rectangle">
<solid android:color="@color/colorBottomTabUnselected"/>
</shape>
</item>
</ripple>