IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Android的Kotlin:Fragment+BottomNavigationView实现非滑动页面与底部导航键 -> 正文阅读

[移动开发]Android的Kotlin:Fragment+BottomNavigationView实现非滑动页面与底部导航键

1.实现底部导航键效果如下:


2.activity_main.xml布局代码如下,底部带图标和文字的导航键

......
<com.google.android.material.bottomnavigation.BottomNavigationView
        android:id="@+id/bottomNavigationView"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:layout_gravity="bottom"
        android:background="@drawable/ripple_item_select"
        app:itemIconTint="@color/selector_bottom_navigation_item"
        app:itemTextColor="@color/selector_bottom_navigation_item"
        app:labelVisibilityMode="labeled"
        app:menu="@menu/menu_bottom_navigation"/>
......

1.app:itemIconTint:指定底部导航栏元素图标的着色方式,默认元素选中是iocn颜色为@color/colorPrimary
2.app:itemTextColor:指定底部导航栏元素文字的着色方式
3.app:menu:使用Menu的形式为底部导航栏指定元素

在这里插入图片描述
2.1 BottomNavigationView,在app的build.gradle中添加依赖包

implementation 'com.google.android.material:material:1.2.1'

2.2 使用menu属性定义底部条目:

1. 在res文件下创建menu文件夹
2. 在menu文件下创建条目的menu_bottom_navigation.xml
3. 设置id、icon、title等属性

......
    <item
            android:id="@+id/fragment1"
            android:icon="@drawable/ic_launcher_background"
            android:title="首页" />
    <item
            android:id="@+id/fragment2"
            android:icon="@drawable/ic_launcher_background"
            android:title="消息" />
    <item
            android:id="@+id/fragment3"
            android:icon="@drawable/ic_launcher_background"
            android:title="个人" />
    <item
            android:id="@+id/fragment4"
            android:icon="@drawable/ic_launcher_background"
            android:title="关于" />
......

在这里插入图片描述
2.2.1 在AndroidManifest.xml中的application上改标题栏的:

android:theme="@style/AppTheme">

2.2.2 styles.xml中添加代码,底部带图标文字的导航键被点击改变大小

    <style
......
        <item name="radioButtonStyle">@style/RadioButton_no</item>
        <item name="checkboxStyle">@style/CheckBox_no</item>
    </style>
    <style name="RadioButton_no" parent="Widget.AppCompat.CompoundButton.RadioButton">
        <item name="buttonCompat">@null</item>
        <item name="android:background">@null</item>
    </style>
    <style name="CheckBox_no" parent="Widget.AppCompat.CompoundButton.CheckBox">
        <item name="buttonCompat">@null</item>
        <item name="android:background">@null</item>
    </style>

在这里插入图片描述
3.MainActivity.kt
3.1 创建四个Fragment.kt

......
        fragments = mapOf(
            R.id.fragment1 to createFragment(Fragment1::class.java),
            R.id.fragment2 to createFragment(Fragment2::class.java),
            R.id.fragment3 to createFragment(Fragment3::class.java),
            R.id.fragment4 to createFragment(Fragment4::class.java)
        )
......

在这里插入图片描述
Fragment1.kt,精简的代码

class Fragment1 : BaseFragment(){
    override fun layoutRes(): Int = R.layout.fragment1
    companion object {
        fun newInstance() = Fragment1()
    }
}

3.2 开始启动底部的四个导航键,第一个是默认的

......
        if (savedInstanceState == null) {
            val initialItemId = R.id.home
            bottomNavigationView.selectedItemId = initialItemId
            showFragment(initialItemId)
        }
......

在这里插入图片描述
我公司在开发的时候,会经常遇到小红点的需求,像微信的聊天信息,新消息的通知
好,最后来实现下小红点
3.3 添加小红点

/**
     * BottomNavigationView显示角标
     * @param viewIndex tab索引
     * @param showNumber 显示的数字,小于等于0是将不显示
     */
    private fun showBadgeView(viewIndex: Int, showNumber: Int) {
        // 具体child的查找和view的嵌套结构请在源码中查看
        // 从bottomNavigationView中获得BottomNavigationMenuView
        val menuView = bottomNavigationView.getChildAt(0) as BottomNavigationMenuView
        // 从BottomNavigationMenuView中获得childview, BottomNavigationItemView
        if (viewIndex < menuView.childCount) {
            // 获得viewIndex对应子tab
            val view: View = menuView.getChildAt(viewIndex)

            badgeView.bindTarget(view).badgeNumber = showNumber
        }
    }

在这里插入图片描述
我公司做开发,Fragment在底部导航键上面就无需要ViewPager滑动页面,高部导航键(标题栏)就需要
4.源代码zip下载:
????下载源代码

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-07-17 12:03:47  更:2021-07-17 12:04:13 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/20 11:52:43-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码