【发布时间】:2017-07-12 18:30:11
【问题描述】:
【问题讨论】:
-
提供一些代码
标签: java android uinavigationbar tabview bottomnavigationview
【问题讨论】:
标签: java android uinavigationbar tabview bottomnavigationview
【讨论】:
您所要做的就是在您的 dimens.xml 文件中覆盖 design_bottom_navigation_active_text_size 的尺寸。
<dimen name="design_bottom_navigation_active_text_size" tools:override = "true" >12sp</dimen>
这里 12sp 是 inactive 底部导航项的默认文本大小。也为 active 底部导航项设置相同的值。您将没有缩放效果。
【讨论】:
我已经做了很多试验和错误,现在我意识到更好的选择是使用第三方库作为底栏。更好的解决方案之一是roughike 有很多可用的自定义项
【讨论】:
public static 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.setShifting(false);
// set once again checked value, so view will be updated
//noinspection RestrictedApi
item.setChecked(item.getItemData().isChecked());
}
} catch (NoSuchFieldException e) {
Log.e("BNVHelper", "Unable to get shift mode field", e);
} catch (IllegalAccessException e) {
Log.e("BNVHelper", "Unable to change value of shift mode", e);
}
}
}
@Override
protected void onStop() {
super.onStop();
}
}
之后放这个
BottomNavigationViewHelper.disableShiftMode(bottomNavigationView);
我试过了,效果很好
【讨论】: