系统默认设置
BottomNavigationView 默认底部其实是一张图片与颜色的切换,下面是系统自带的设置
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/navigation_home"
android:icon="@drawable/ic_home_black_24dp"
android:title="@string/title_home" />
<item
android:id="@+id/navigation_dashboard"
android:icon="@drawable/ic_dashboard_black_24dp"
android:title="@string/title_dashboard" />
<item
android:id="@+id/navigation_notifications"
android:icon="@drawable/ic_notifications_black_24dp"
android:title="@string/title_notifications" />
</menu>
系统创建的效果图,只有图标和颜色的切换
自定义设置
设置两张图片切换,首先创建selector,示例代码如下:
<!-- 广播图标切换效果-->
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:drawable="@drawable/new_icon_bottom_broad_gray" android:state_checked="false" />
<item android:drawable="@drawable/new_icon_bottom_broad_blue" android:state_checked="true" />
</selector>
<!-- 审核图标切换效果-->
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:drawable="@drawable/new_icon_bottom_monitor_gray" android:state_checked="false" />
<item android:drawable="@drawable/new_icon_bottom_monitor_blue" android:state_checked="true" />
</selector>
<!-- 设备图标切换效果-->
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:drawable="@drawable/new_icon_bottom_device_gray" android:state_checked="false" />
<item android:drawable="@drawable/new_icon_bottom_device_blue" android:state_checked="true" />
</selector>
<!-- 服务器图标切换效果-->
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:drawable="@drawable/new_icon_bottom_statistics_gray" android:state_checked="false" />
<item android:drawable="@drawable/new_icon_bottom_statistics_blue" android:state_checked="true" />
</selector>
菜单布局如下
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/item_broad"
android:enabled="true"
android:icon="@drawable/selector_bottom_menu_broad"
android:title="广播"
app:showAsAction="always"/>
<item
android:id="@+id/item_check"
android:enabled="true"
android:icon="@drawable/selector_bottom_menu_examine"
android:title="审核"
app:showAsAction="always"/>
<item
android:id="@+id/item_device"
android:enabled="true"
android:icon="@drawable/selector_bottom_menu_device"
android:title="设备"
app:showAsAction="always"/>
<item
android:id="@+id/item_server"
android:enabled="true"
android:icon="@drawable/selector_bottom_menu_statistics"
android:title="服务器"
app:showAsAction="always"/>
</menu>
app:showASAction
用来指定按钮的显示位置
app:showASAction=“always”表示永远显示在Toolbar中,如果屏幕空间不够则不显示。
app:showASAction=“ifRoom”表示如果空间充足就显示在Toolar,否则显示在菜单中。
app:showASAction=“never”表示永远显示在菜单中。
在代码中设置,避免出现使用Menu时不显示彩色图标的问题
bnvBottomNavigationView.setItemIconTintList(null);
实现效果如下: