📅  最后修改于: 2023-12-03 14:51:44.986000             🧑  作者: Mango
当我们使用android的底部导航视图时,通常会看到选中的图标会有一个弹跳的动画效果。但是,有些情况下我们并不需要这种效果,这时候就需要将该动画效果去掉。下面介绍如何从android的底部导航视图中删除弹跳动画。
我们可以通过设置选中图标的动画属性,将动画效果去掉。
BottomNavigationView navigationView = (BottomNavigationView) findViewById(R.id.navigation);
BottomNavigationMenuView menuView = (BottomNavigationMenuView) navigationView.getChildAt(0);
for (int i = 0; i < menuView.getChildCount(); i++) {
BottomNavigationItemView menuItemView = (BottomNavigationItemView) menuView.getChildAt(i);
// 将选中图标的动画属性去掉
menuItemView.setShifting(false);
// 选中图标的显示效果不变
menuItemView.setChecked(menuItemView.getItemData().isChecked());
}
我们可以通过xml属性设置选中图标的动画效果。
<com.google.android.material.bottomnavigation.BottomNavigationView
...
app:labelVisibilityMode="unlabeled"
app:itemIconTint="@drawable/bottom_nav_item_color_state"
app:itemTextColor="@drawable/bottom_nav_item_color_state"
app:menu="@menu/bottom_navigation_menu" />
此时,需要将app:labelVisibilityMode属性设置为"unlabeled",这样可以防止标签出现在底部导航视图中,从而使得底部导航视图只有图标。同时,我们还需要设置app:itemIconTint和app:itemTextColor的值为一个颜色选择器,该颜色选择器可以返回选中和未选中图标的颜色。在颜色选择器中,我们设置了消除了动画效果。
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/bottom_nav_item_selected_color" android:state_checked="true" />
<item android:color="@color/bottom_nav_item_unselected_color" />
</selector>
如上面的代码所示,通过消除动画效果,底部导航视图的图标在选中时不再弹跳。