恒泰软件,必属精品
标题:
去除BottomNavigationView的Item大于3个时的动画效果
[打印本页]
作者:
admin
时间:
2020-11-26 21:04
标题:
去除BottomNavigationView的Item大于3个时的动画效果
当BottomNavigation的Item超过3个时选择会有动画效果,且选中Item时文字才会显示,下面是解决方案:
sdk版本小于28时用反射解决
public class BottomNavigationViewHelper {
@SuppressLint("RestrictedApi")
public static void disableShiftMode(BottomNavigationView view) {
BottomNavigationMenuView menuView = (BottomNavigationMenuView) view.getChildAt(0);
try {
Field shiftingMode = menuView.getClass().getDeclaredField("mShiftingMode");
shiftingMode.setAccessible(true);
shiftingMode.setBoolean(menuView, false);
shiftingMode.setAccessible(false);
for (int i = 0; i < menuView.getChildCount(); i++) {
BottomNavigationItemView item = (BottomNavigationItemView) menuView.getChildAt(i);
//noinspection RestrictedApi
item.setShiftingMode(false);
// set once again checked value, so view will be updated
//noinspection RestrictedApi
item.setChecked(item.getItemData().isChecked());
}
} catch (NoSuchFieldException e) {
} catch (IllegalAccessException e) {
}
}
}
BottomNavigationViewHelper.disableShiftMode(navigation);
sdk版本大于等于28时置属性解决
app:itemHorizontalTranslationEnabled="false"
app:labelVisibilityMode="labeled"
如
<
com.google.android.material.bottomnavigation.BottomNavigationView
android
:id
="@+id/nav_view"
android
:layout_width
="0dp"
android
:layout_height
="wrap_content"
android
:layout_marginStart
="0dp"
android
:layout_marginEnd
="0dp"
android
:background
="?android:attr/windowBackground"
app
:layout_constraintBottom_toBottomOf
="parent"
app
:layout_constraintLeft_toLeftOf
="parent"
app
:layout_constraintRight_toRightOf
="parent"
app
:menu
="@menu/bottom_nav_menu"
app
:itemHorizontalTranslationEnabled
="false"
app
:labelVisibilityMode
="labeled"
/>
欢迎光临 恒泰软件,必属精品 (http://bbs.zj500.com/)
Powered by Discuz! X3.2