Android BottomNavigationView的属性设置
Posted BandaYung
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android BottomNavigationView的属性设置相关的知识,希望对你有一定的参考价值。
底部导航栏通常是每个item由一个icon和title组成的,然后再控制下是否点击的状态即可。当然也可以使用官方在support包内提供的BottomNavigationView
来实现,于简单的需求来说,使用BottomNavigationView
来实现,还是比较方便的。
先给出两张的差别:
未设置属性:
有设置属性:
BottomNavigationView的使用方法
在layout中引用:
<android.support.design.widget.BottomNavigationView
android:id="@+id/bnv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white"
app:labelVisibilityMode="labeled"
app:menu="@menu/navigation" />
1、实现tab按下的图标切换
menu文件下的navigation.xml(没有就新建)定义几个tab,如下:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/menu_main_bottom_mall"
android:icon="@mipmap/ic_launcher"
android:title="首页" />
<item
android:id="@+id/menu_main_bottom_bbs"
android:icon="@mipmap/ic_launcher"
android:title="订货" />
<item
android:id="@+id/menu_main_bottom_shop_car"
android:icon="@mipmap/ic_launcher"
android:title="社区" />
<item
android:id="@+id/menu_main_bottom_me"
android:icon="@mipmap/ic_launcher"
android:title="个人中心" />
</menu>
这里也可以自定义tab的图标切换,在drawable下定义一个selector,然后修改icon
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@mipmap/nav_cm_s" android:state_checked="true" />
<item android:drawable="@mipmap/nav_cm_d" android:state_checked="false" />
</selector>
修改完成后,但是选中的图标并不符合刚刚情况,为什么?
因为这里的图标要求比较严格,必须是镂空的,不能自定义颜色.。
因为会有tint,所以所有不镂空的地方都会变成统一的tint颜色。
调用BottomNavigationView的setItemIconTintList(null)
即可解决
2、选中的tab不要让图标变大
在layout布局中设置
app:labelVisibilityMode="labeled"
3、选中的tab字体会变大
在dimens.xml中覆盖其默认值
<dimen name="design_bottom_navigation_text_size" tools:override="true">14sp</dimen>
<dimen name="design_bottom_navigation_active_text_size" tools:override="true">14sp</dimen>
4、设置tab的字体颜色切换
其中colors数组第一个是未选色,第二个是选中色,在代码中设置如下:
int[][] states = new int[][]
new int[]-android.R.attr.state_checked,
new int[]android.R.attr.state_checked
;
int[] colors = new int[]getResources().getColor(R.color.color_C3C3C3),
getResources().getColor(R.color.colorPrimary)
;
ColorStateList csl = new ColorStateList(states, colors);
mBottomNavigationView.setItemTextColor(csl);
以上是关于Android BottomNavigationView的属性设置的主要内容,如果未能解决你的问题,请参考以下文章
Android 逆向Android 权限 ( Android 逆向中使用的 android.permission 权限 | Android 系统中的 Linux 用户权限 )