学习笔记
1. 设置 BottomNavigationView 样式
你可以通过定义一个自定义的样式来调整 BottomNavigationView
的外观。可以在 res/values/styles.xml
文件中创建样式,或者直接使用默认样式并进行修改。
例子:设置 BottomNavigationView 的背景色和图标颜色
首先,确保你有一个 styles.xml
文件,然后创建一个新的样式文件来定制 BottomNavigationView
。
<resources><!-- 自定义 BottomNavigationView 样式 --><style name="CustomBottomNavStyle" parent="Widget.MaterialComponents.BottomNavigationView"><!-- 设置背景色 --><item name="android:background">@color/bottom_nav_background</item><!-- 设置选中项的颜色 --><item name="itemIconTint">@color/bottom_nav_item_icon</item><item name="itemTextColor">@color/bottom_nav_item_text</item><!-- 设置选中项的高亮色 --><item name="itemActiveIndicatorStyle">@style/BottomNavActiveIndicator</item></style><!-- 选中项的颜色(例如,蓝色) --><color name="bottom_nav_item_icon">#2196F3</color><color name="bottom_nav_item_text">#2196F3</color><color name="bottom_nav_background">#ffffff</color>
</resources>
然后,在你的布局文件 activity_main.xml
中使用这个样式:
<com.google.android.material.bottomnavigation.BottomNavigationViewandroid:id="@+id/bottomnavigation_main"android:layout_width="match_parent"android:layout_height="wrap_content"app:menu="@menu/bottom"style="@style/CustomBottomNavStyle" />
2. 设置 BottomNavigationView 的显示方式
-
固定 (Fixed):当
BottomNavigationView
需要显示所有菜单项时,可以将android:menu
属性设置为你的菜单文件,然后直接显示菜单项。<com.google.android.material.bottomnavigation.BottomNavigationViewandroid:id="@+id/bottomnavigation_main"android:layout_width="match_parent"android:layout_height="wrap_content"app:menu="@menu/bottom" />
-
滚动模式 (Shifted):如果菜单项太多时,可以启用滚动模式。滚动模式允许显示的项目根据容器的宽度变化。这通常是默认的行为,不需要做特别的设置。
3. 设置 BottomNavigationView 的 item 动画(例如,添加高亮效果)
可以通过 itemIconTint
和 itemTextColor
属性来自定义未选中和选中状态下图标和文本的颜色。
<com.google.android.material.bottomnavigation.BottomNavigationViewandroid:id="@+id/bottomnavigation_main"android:layout_width="match_parent"android:layout_height="wrap_content"app:menu="@menu/bottom"app:itemIconTint="@drawable/nav_item_icon_tint"app:itemTextColor="@drawable/nav_item_text_color"app:itemRippleColor="@android:color/transparent" />
在 res/drawable/
文件夹下,可以创建一个 nav_item_icon_tint.xml
来指定颜色选择器。
<!-- res/drawable/nav_item_icon_tint.xml -->
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"><item android:color="@color/colorPrimary" android:state_checked="true"/><item android:color="@android:color/darker_gray"/>
</selector>
4. 设置 BottomNavigationView 的布局行为
你还可以通过 ViewPager2
和 BottomNavigationView
来协调视图。通过监听 BottomNavigationView
的选择事件,切换 ViewPager2
的页面。
BottomNavigationView bottomNavigationView = findViewById(R.id.bottomnavigation_main);
ViewPager2 viewPager2 = findViewById(R.id.viewpager2_main);// 设置 ViewPager2 的适配器
viewPager2.setAdapter(new YourPagerAdapter());bottomNavigationView.setOnNavigationItemSelectedListener(item -> {switch (item.getItemId()) {case R.id.menu_home:viewPager2.setCurrentItem(0);return true;case R.id.menu_search:viewPager2.setCurrentItem(1);return true;case R.id.menu_profile:viewPager2.setCurrentItem(2);return true;default:return false;}
});
总结
- 样式自定义:通过
styles.xml
文件自定义BottomNavigationView
的外观,包括背景色、图标颜色、选中文本颜色等。 - 显示方式:可以使用固定(显示所有菜单项)或滚动模式来显示
BottomNavigationView
的菜单项。 - 与 ViewPager2 结合:通过
OnNavigationItemSelectedListener
来监听菜单项选择,并在ViewPager2
中切换页面。