Android BottomNavigationView的使用
BottomNavigationView大于3个menu文字和icon都显示
代码中设置
public static void disableShiftMode(BottomNavigationView view) {
int count = view.getChildCount();
if (count > 0) {
BottomNavigationMenuView menuView = (BottomNavigationMenuView) view.getChildAt(0);
if (menuView != null) {
menuView.setLabelVisibilityMode(1);
menuView.updateMenuView();
}
}
}
布局中设置
BottomNavigationView 的图片切换
创建一个选择器
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 选中时图片-->
<item android:drawable="@mipmap/testcheched_1" android:state_checked="true" />
<!-- 未选中时 图片 -->
<item android:drawable="@mipmap/testcheched_2" android:state_checkable="false" />
</selector>
找到相应item中 android:icon属性 (此处可直接设图片但切换时不会变化 若没有设置一中内容则会变为原图投影的灰色。)
设置以上选择器。
BottomNavigationView 添加角标
//获取整个的NavigationView
BottomNavigationMenuView menuView = (BottomNavigationMenuView) bottom_navigation.getChildAt(0);
//这里就是获取所添加的每一个Tab(或者叫menu),
View tab = menuView.getChildAt(3);
BottomNavigationItemView itemView = (BottomNavigationItemView) tab;
//加载我们的角标View,新创建的一个布局
View badge = LayoutInflater.from(this).inflate(R.layout.im_badge, menuView, false);
//添加到Tab上
itemView.addView(badge);
TextView textView = badge.findViewById(R.id.texT);
textView.setText(String.valueOf(1));
//无消息时可以将它隐藏即可
textView.setVisibility(View.VISIBLE);
字体大小更改
<dimen name="design_bottom_navigation_active_text_size">14dp</dimen>
<dimen name="design_bottom_navigation_text_size">14dp</dimen>
如果要设置icon距离上边距的距离,也可以通过重新定义R.dimen.design_bottom_navigation_margin来实现。
设置图片的尺寸
/**
* 设置图片尺寸
* @param view
* @param width
* @param height
*/
public static void setImageSize(BottomNavigationView view, int width, int height) {
BottomNavigationMenuView menuView = (BottomNavigationMenuView) view.getChildAt(0);
try {
for (int i = 0; i < menuView.getChildCount(); i++) {
BottomNavigationItemView item = (BottomNavigationItemView) menuView.getChildAt(i);
ImageView imageView = item.findViewById(com.google.android.material.R.id.icon);
imageView.getLayoutParams().width = width;
imageView.getLayoutParams().height = height;
}
} catch (Exception e) {
e.printStackTrace();
}
}
设置底部bottom 高度
<!--<dimen name="design_bottom_navigation_height">100dp</dimen>-->