• Android Material Design之BottomNavigationView(十一)


    1. 效果图
      在这里插入图片描述
    2. 资源引入
    implementation 'com.google.android.material:material:1.4.0'
    
    • 1
    1. 属性
    属性描述
    android:id控件id
    android:layout_width控件长度
    android:layout_height控件高度
    app:itemIconSizeitem图片大小
    app:itemIconTint图片颜色
    app:itemTextColor文字颜色
    app:labelVisibilityModeauto selected选中时显示文字+图片 unlabeled 不显示文字 labeled 显示文字+图片
    app:menu菜单文件
    1. 源代码
      activity_bottom_app_bar.xml
    
    <androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    
    
        <com.google.android.material.bottomnavigation.BottomNavigationView
            android:id="@+id/bottomNavMenu"
            android:layout_width="match_parent"
            android:layout_height="56dp"
            android:layout_gravity="bottom"
            app:itemIconSize="25dp"
            app:itemIconTint="@color/icon_color"
            app:itemTextColor="@color/text_color"
            app:labelVisibilityMode="labeled"
            app:menu="@menu/bottom_menu" />
    androidx.coordinatorlayout.widget.CoordinatorLayout>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    icon_color.xml

    
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:color="@color/design_default_color_primary_variant" android:state_checked="true" />
        <item android:color="@color/black" />
    selector>
    
    • 1
    • 2
    • 3
    • 4
    • 5

    text_color.xml

    
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:color="@color/design_default_color_primary_variant" android:state_checked="true" />
        <item android:color="@color/black" />
    selector>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    bottom_menu.xml

    
    <menu xmlns:android="http://schemas.android.com/apk/res/android">
        <item
            android:id="@+id/item1"
            android:icon="@drawable/ic_baseline_message_24"
            android:title="AAA">item>
    
        <item
            android:id="@+id/item2"
            android:icon="@drawable/ic_baseline_mic_24"
            android:title="BBB">item>
    
        <item
            android:id="@+id/item3"
            android:icon="@drawable/ic_baseline_videocam_24"
            android:title="CCC">item>
    
        <item
            android:id="@+id/item4"
            android:icon="@drawable/ic_baseline_person_outline_24"
            android:title="DDD">item>
    menu>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    BottomAppBar.java

    package com.yyf.demo;
    
    import androidx.annotation.NonNull;
    import androidx.appcompat.app.AppCompatActivity;
    import androidx.core.content.ContextCompat;
    import androidx.recyclerview.widget.LinearLayoutManager;
    import androidx.recyclerview.widget.RecyclerView;
    
    import android.os.Bundle;
    import android.util.Log;
    import android.view.LayoutInflater;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.TextView;
    
    import com.google.android.material.button.MaterialButtonToggleGroup;
    import com.google.android.material.navigation.NavigationBarView;
    import com.yyf.demo.databinding.ActivityBottomAppBarBinding;
    
    import java.util.ArrayList;
    import java.util.List;
    
    public class BottomAppBar extends AppCompatActivity {
        private ActivityBottomAppBarBinding binding;
        private static final String TAG = "BottomAppBar";
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            binding = ActivityBottomAppBarBinding.inflate(getLayoutInflater());
            setContentView(binding.getRoot());
    
    		//监听每个菜单响应事件
            binding.bottomNavMenu.setOnItemSelectedListener(new NavigationBarView.OnItemSelectedListener() {
                @Override
                public boolean onNavigationItemSelected(@NonNull MenuItem item) {
                    Log.d(TAG, "onNavigationItemSelected: " + item.getTitle());
                    return true;
                }
            });
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    1. 注意事项
      底部菜单不可大于5 否则会报如下错误:

    Caused by: java.lang.IllegalArgumentException: Maximum number of items supported by BottomNavigationView is 5. Limit can be checked with BottomNavigationView#getMaxItemCount()

    有没有办法修改大于5得item,点进源码查看MAX_ITEM_COUNT是final类型得,也就意味着无法修改

    public class BottomNavigationView extends NavigationBarView {
    static final int MAX_ITEM_COUNT = 5;

    public BottomNavigationView(@NonNull Context context) {
    this(context, null);
    }

    public BottomNavigationView(@NonNull Context context, @Nullable AttributeSet attrs) {
    this(context, attrs, R.attr.bottomNavigationStyle);
    }
    public BottomNavigationView(
    @NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
    this(context, attrs, defStyleAttr, R.style.Widget_Design_BottomNavigationView);
    }

  • 相关阅读:
    【数据结构】第一章课后练习题——绪论
    【重识云原生】第六章容器6.1.10节——DockerFile解析
    java毕业设计社区团购系统Mybatis+系统+数据库+调试部署
    Mybatis-Plus+Nacos配置中心和服务发现保姆级教程
    【数据结构初阶】七、非线性表里的二叉树(堆的实现 -- C语言顺序结构)
    关于对接芝麻 GO 的几点问题
    Redis最全详解(三)——SpringBoot整合2种方式
    手动实现SpringMVC底层机制
    vue3组件通信学习笔记
    GraphPad Prism 10 for Mac(统计分析绘图软件)
  • 原文地址:https://blog.csdn.net/csdn_yang123/article/details/128142624