如何在BottomNavigationView选中标签添加环形(仿Instagram样式)
当然可以实现,核心思路是通过**状态选择器(Selector)**给底部导航的选中项添加环形背景,以下是具体实现步骤:
1. 创建环形背景选择器
在res/drawable目录下新建circle_selector.xml,定义选中和未选中状态的样式:
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <!-- 选中状态:显示灰色环形边框 --> <item android:state_checked="true"> <shape android:shape="oval"> <stroke android:width="2dp" android:color="@color/gray" /> <solid android:color="@android:color/transparent" /> <!-- 设置内边距,让环形和图标保持合适间距 --> <padding android:left="4dp" android:top="4dp" android:right="4dp" android:bottom="4dp" /> </shape> </item> <!-- 未选中状态:透明背景 --> <item> <shape android:shape="oval"> <solid android:color="@android:color/transparent" /> <padding android:left="4dp" android:top="4dp" android:right="4dp" android:bottom="4dp" /> </shape> </item> </selector>
2. 给底部导航菜单绑定背景
打开底部导航的菜单文件(比如res/menu/bottom_nav_menu.xml),给每个item设置android:background为上面创建的选择器:
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/nav_home" android:icon="@drawable/ic_home" android:title="首页" android:background="@drawable/circle_selector"/> <item android:id="@+id/nav_profile" android:icon="@drawable/ic_profile" android:title="我的" android:background="@drawable/circle_selector"/> <!-- 其他导航项重复上述配置 --> </menu>
3. 调整导航栏基础配置
确保你的BottomNavigationView布局中开启了单选模式,保证同一时间只有一个项处于选中状态:
<com.google.android.material.bottomnavigation.BottomNavigationView android:id="@+id/bottom_nav" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/white" app:menu="@menu/bottom_nav_menu" app:checkableBehavior="single"/>
自定义调整
- 环形颜色:修改
circle_selector.xml中stroke的android:color值,适配你的App主题色 - 环形粗细:调整
stroke的android:width参数 - 图标与环形间距:修改
padding值来控制间距大小
如果你的底部导航用了自定义Item布局(比如包含ImageView和TextView的组合),只需将选择器背景设置给ImageView的父容器即可,效果一致。
内容的提问来源于stack exchange,提问作者Micro
相关产品推荐
相关产品推荐

