<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
        android:id="@+id/navigation_news"
        android:icon="@drawable/main_news"
        android:title="@string/main_title_news" />
        android:id="@+id/navigation_sight"
        android:icon="@drawable/main_sight"
        android:title="@string/main_title_sight" />
        android:id="@+id/navigation_topic"
        android:icon="@drawable/main_topic"
        android:title="@string/main_title_topic" />
        android:id="@+id/navigation_my"
        android:icon="@drawable/main_my"
        android:title="@string/main_title_my" />
</menu>

然后在drawable下边建四个icon的xml文件如下:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/main_news_s" android:state_checked="true"/>
    <item android:drawable="@drawable/main_news_n"/>
</selector>

 在此只列出一个main_news.xml其余类似只修改选中图标和非选中图标即可。

此时图标切换不是自己设置选中和未选中图标,因为BottomNavigationView自带图标切换颜色风格,如何去掉呢?

java代码:

main_ac_bottomNavigationView.setItemIconTintList(null) ;

kotlin代码:

main_ac_bottomNavigationView?.itemIconTintList=null

2.在布局中使用BottomNavigationView

在app文件夹下的build.gradle加入design包

implementation 'com.android.support:design:28.0.0'

 布局直接上代码:

<com.google.android.material.bottomnavigation.BottomNavigationView
        android:id="@+id/main_ac_bottomNavigationView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:menu="@menu/navigation"
        app:itemIconSize="20dp"
        app:labelVisibilityMode="labeled"
        app:itemTextColor="@color/main_bnv_text"/>

其中app:menu="@menu/navigation"引用上面标题1中的第一段代码,切换图标的menu菜单;

其中app:itemIconSize="20dp"设置底部四个导航图标的大小;

其中app:labelVisibilityMode="labeled"设置选中一个tab标签时, 不要有图标变大的效果,其他效果自己验证;

其中app:itemTextColor="@color/main_bnv_text"设置后不切换标题字体颜色,默认会切换标题字体颜色。

3.自定义标题字体大小和图标与标题间距

在BottomNavigationItemView类中, 发现每个item的布局加载:
LayoutInflater.from(context).inflate(layout.design_bottom_navigation_item, this, true);
我们可以自定义这个布局, 替换原始实现, 从而随意的定制自己的UI.

在layout布局文件中必须以design_bottom_navigation_item.xml新建文件替换BottomNavigationView中的item布局,

也可参照谷歌的布局文件自定义:
https://github.com/dandar3/android-support-design/blob/master/res/layout

design_bottom_navigation_item.xml的代码如下:

<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android"
       xmlns:tools="http://schemas.android.com/tools"
       tools:override="true">
    <ImageView
            android:id="@+id/icon"
            android:layout_width="24dp"
            android:layout_height="24dp"
            android:layout_gravity="center_horizontal"
            android:layout_marginTop="@dimen/design_bottom_navigation_margin"
            android:layout_marginBottom="@dimen/design_bottom_navigation_margin"
            android:duplicateParentState="true" />
    <TextView
            android:id="@+id/smallLabel"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom|center_horizontal"
            android:layout_marginBottom="0dp"
            android:duplicateParentState="true"
            android:textSize="12sp"
            android:text="small" />
    <TextView
            android:id="@+id/largeLabel"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom|center_horizontal"
            android:layout_marginBottom="0dp"
            android:duplicateParentState="true"
            android:textSize="24sp"
            android:text="large"
            android:visibility="invisible" />
</merge>

在代码中我们可以设置图标上下间距,也可以使用 android:layout_marginTop="@dimen/design_bottom_navigation_margin"默认上丢外边距,除此之外我们也可以设置字体大小,标题字体用了一大一小两个TextView,切换图标会看出选中标题变大,如果设置两个textSize相等则切换标题字体大小不变。

4.设置BottomNavigationView点击事件 

备注kotlin代码如下:

class MainActivity : BaseActivity(), BottomNavigationView.OnNavigationItemSelectedListener
 private fun initView() {
        val main_ac_bottomNavigationView = findViewById<BottomNavigationView>(R.id.main_ac_bottomNavigationView)
        main_ac_bottomNavigationView?.itemIconTintList=null
        main_ac_bottomNavigationView?.setOnNavigationItemSelectedListener(this)
    override fun onNavigationItemSelected(item: MenuItem): Boolean {
        when (item.itemId) {
            R.id.navigation_news -> {
//                loadFragment {}
            R.id.navigation_sight -> {
            R.id.navigation_topic -> {
            R.id.navigation_my -> {
        return true

第一次发表文章,希望大家关注下,后期会加入更多技术干货,如有错误和引用不当请与我联系或留言。

先贴上效果图:谷歌原始代码出来是这样的:官方的风格不是我们设计的风格,我也想直接使用得了,奈何不符合设计要求。1.点击切换图标设置在res文件夹下新建文件夹menu,并在menu下面建一个navigation.xml如下:&lt;?xml version="1.0" encoding="utf-8"?&gt;&lt;menu xmlns:android... 1:app\build.gradle中添加依赖: android x : implementation 'androidx.appcompat:appcompat:1.1.0' 非android x(注意版本号对应) : implementation 'com.android.support:design:28.0.0' 2:MainActivity: public class MainActivity extends AppCompatActivity implements BottomNavigationView.OnNavigation compile 'com.android.support:design:26.1.0' 2.在activity_main.xml中添加BottomNavigationView控件 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.andr... 在开发中,底部导航栏十分常见。一般来说,我们可以自己组合控件实现,比如LinearLayout + TextView(使用android:drawableTop属性+selector状态切换)、RadioGroup + RadioButton等等组合控件的方法自定义实现复杂效果。而BottomNavigationView控件也是一种不错的选择。 二、基本使用 <LinearLayout xmlns:android="http://schemas.android.com/apk/re
一,基本用法 1,首先需要添加依赖: implementation 'com.google.android.material:material:1.1.0' 2,布局文件中引入: <com.google.android.material.bottomnavigation...
步骤一:在菜单文件中定义底部导航菜单选项内容 1.1 新建menu文件menu_bottom_nav.xml(src/main/res/menu/menu_bottom_nav.xml) 1.2 构建menu_bottom_nav.xml(src/main/res/menu/menu_bottom_nav.xml)内容 <?xml version="1.0" encoding="utf-8"?>
底部导航栏使用比较常见,目前常用的APP几乎都是使用底部导航栏将内容分类, 这个Android底部导航栏 BottomNavigationViewGoogle官方推荐的, 先来看看案例效果图 ```xml <com.google.android.material.bottomnavigation.BottomNavigationView android:id="@+id/bottom_navigation" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" app:menu="@menu/bottom_navigation_menu" /> 2. 创建一个菜单文件(menu),其中包含底部导航栏中的所有菜单项。例如: ```xml <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> android:id="@+id/menu_home" android:icon="@drawable/ic_home" android:title="@string/home" app:showAsAction="ifRoom" /> android:id="@+id/menu_search" android:icon="@drawable/ic_search" android:title="@string/search" app:showAsAction="ifRoom" /> android:id="@+id/menu_notifications" android:icon="@drawable/ic_notifications" android:title="@string/notifications" app:showAsAction="ifRoom" /> android:id="@+id/menu_profile" android:icon="@drawable/ic_profile" android:title="@string/profile" app:showAsAction="ifRoom" /> </menu> 3. 在Activity中设置底部导航栏的监听器,并在回调函数中处理每个菜单项的点击事件。例如: ```java public class MainActivity extends AppCompatActivity { private BottomNavigationView bottomNavigationView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); bottomNavigationView = findViewById(R.id.bottom_navigation); bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() { @Override public boolean onNavigationItemSelected(@NonNull MenuItem item) { switch (item.getItemId()) { case R.id.menu_home: // Handle home menu item click return true; case R.id.menu_search: // Handle search menu item click return true; case R.id.menu_notifications: // Handle notifications menu item click return true; case R.id.menu_profile: // Handle profile menu item click return true; default: return false; 这些步骤将帮助您在Android Studio中创建一个基本的底部导航栏。当然,您可以根据自己的需求进行定制和修改。
CSDN-Ada助手: 非常感谢你分享关于“RN中AAPT: error: resource android:attr/lStar not found解决办法”的博客,这将会帮助到许多遇到相似问题的开发者。同时,我想建议你可以再写一篇关于如何优化RN应用性能的技术博文。可以从代码结构、组件复用、网络请求等多个方面分享一些经验和技巧,帮助读者更好地优化自己的RN应用性能。期待你的新作品! 为了方便博主创作,提高生产力,CSDN上线了AI写作助手功能,就在创作编辑器右侧哦~(https://mp.csdn.net/edit?utm_source=blog_comment_recall )诚邀您来加入测评,到此(https://activity.csdn.net/creatActivity?id=10450&utm_source=blog_comment_recall)发布测评文章即可获得「话题勋章」,同时还有机会拿定制奖牌。 使用Google的BottomNavigationView自定义底部导航栏 怎么修改design_bottom_navigation_item.xml的属性呢? 使用Google的BottomNavigationView自定义底部导航栏 wangchangsheng0 塔塔西亚: design_bottom_navigation_item.xml里面的IamgeView就是底部item的图片,可自行修改图片大小 使用Google的BottomNavigationView自定义底部导航栏 塔塔西亚: 这个怎么修改图片大小啊