iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >JetPackCompose底部导航栏的实现方法详解
  • 476
分享到

JetPackCompose底部导航栏的实现方法详解

2024-04-02 19:04:59 476人浏览 薄情痞子
摘要

目录1.声明导航栏数据源2.使用Scaffold搭建页面结构3.BottomNavigation的用法1.声明导航栏数据源 主要声明导航栏label和图标数组,这里使用的是本地数据,

1.声明导航栏数据源

主要声明导航栏label和图标数组,这里使用的是本地数据,也可以使用网络数据。

//导航label数组
private val labels = arrayOf("首页", "房讯", "消息", "我的")
//导航默认图标集合
private val defImages =
    arrayOf(R.mipmap.img_index, R.mipmap.img_info, R.mipmap.img_message, R.mipmap.img_preson)
//导航选中图标集合
private var selectImages =
    arrayOf(
        R.mipmap.img_index_select,
        R.mipmap.img_info_select,
        R.mipmap.img_message_select,
        R.mipmap.img_preson_select
    )
//导航选中索引
private var selectIndex by mutableStateOf(0)

2.使用Scaffold搭建页面结构

Compose给我们提供了Scaffold脚手架,实现了Material设计的页面基本结构。包括标题栏、底部栏、SnackBar(类似吐司功能)、浮动按钮、抽屉组件、剩余内容布局等,让我们可以快速定义一个基本的页面结构。

setContent {
    val navController = rememberNavController()
    Scaffold(
        //设置底部导航栏
        bottomBar = {
            BuildBottomBar(labels = labels, navController)
        },
    ) {
        //设置页面主内容区域,这里通过NavHost,根据选中不同的导航栏Tab导航到不同的页面。
        NavHost(navController = navController, startDestination = labels[selectIndex]) {
            composable(labels[0]) {
                //首页Compose
                IndexPage()
            }
            composable(labels[1]) {
                //咨询Compose
                InfoPage()
            }
            composable(labels[2]) {
                //消息Compose
                MessagePage()
            }
            composable(labels[3]) {
                //个人中心Compose
                PersonPage()
            }
        }
    }
}

3.BottomNavigation的用法

BottomNavigation中的content可以添加多个BottomNavigationItem,用来构建导航栏的样式,BottomNavigationItem中可以设置iconlabel,选中颜色和未选中颜色等等一些常用的属性。可以给item设置点击事件onClick等。

BottomNavigation(backgroundColor = Color.White, elevation = 6.dp) {
    for (i in labels.indices) {
        BottomNavigationItem(selected = selectIndex == i, onClick = {
            selectIndex = i
            navController.navigate(labels[i])
        }, icon = {
            Image(
                painter = painterResource(id = if (selectIndex == i) selectImages[i] else defImages[i]),
                contentDescription = labels[i],
                modifier = Modifier.size(25.dp)
            )
        }, label = {
            Text(text = labels[i], color = if (selectIndex == i) Color.Red else Color.Gray)
        })
    }
}

这里用了一个循环来添加BottomNavigationItem,通过selectIndex来判断tab是否选中。在点击事件中设置选中的索引。 这里要注意的是在Compose中导航主要是用NavHostController来进行控制。 需要引入单独的依赖库

通常这个实例是用rememberNavController()来获取。

val navController = rememberNavController()

可以通过navigate方法来进行导航到具体也面,naviget传人的参数和NavHost中的startDestination参数一致,这样就可以跳转到指定页面中

navController.navigate(labels[i])

到此这篇关于JetPack Compose底部导航栏的实现方法详解的文章就介绍到这了,更多相关JetPack Compose底部导航栏内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: JetPackCompose底部导航栏的实现方法详解

本文链接: https://www.lsjlt.com/news/166970.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • JetPackCompose底部导航栏的实现方法详解
    目录1.声明导航栏数据源2.使用Scaffold搭建页面结构3.BottomNavigation的用法1.声明导航栏数据源 主要声明导航栏label和图标数组,这里使用的是本地数据,...
    99+
    2024-04-02
  • Flutter实现底部导航栏创建详解
    目录添加依赖项如何使用功能属性主题预览图代码Flutter web问题:Failed to load network image我的解决办法参考资料ConvexBottomBar是一...
    99+
    2024-04-02
  • Android实现底部导航栏方法(Navigation篇)
    Navigation实现底部导航栏 前言导入和基本使用导入基础使用创建nav文件编辑Nav文件添加页面(代码版)添加页面(图解版) 创建导航动作 action创建action(代码版)...
    99+
    2023-10-10
    android
  • flutter实现底部导航栏
    本文实例为大家分享了flutter实现底部导航栏的具体代码,供大家参考,具体内容如下 一.flutter底部导航栏常用组件BottomNavigationBar 属性介绍 Botto...
    99+
    2024-04-02
  • FragmentTabHost FrameLayout实现底部导航栏
    app经常用到底部导航栏,早前使用过RadioGroup+FrameLayout实现或者RadioGroup+ViewPager实现,现在基本使用FragmentTabHost+FrameLayout来实现,因为使用起来简单易用。下面写一个...
    99+
    2023-05-31
    fragmenttabhost framelayout 导航栏
  • Flutter实现底部和顶部导航栏
    Flutter底部和顶部导航栏的实现,供大家参考,具体内容如下 带文字图标的底部导航栏(使用BottomNavigationBar和BottomNavigationBarItem)来...
    99+
    2024-04-02
  • Android Fragment实现顶部、底部导航栏
    前言 无论是顶部还是底部导航栏,都是大多数APP的标配,网络上的相关实现教程也非常之多。最近回忆起以前写的小项目,发现对这块内容有些遗忘,不妨就再整理一遍代码逻辑,记录下来,方便日后...
    99+
    2024-04-02
  • flutter实现底部导航栏切换
    本文实例为大家分享了flutter实现底部导航栏切换的具体代码,供大家参考,具体内容如下 思路:MaterialApp是提供了bottomnavigationbar的,可以使用,这个...
    99+
    2024-04-02
  • Android实现底部导航栏效果
    目前网上主流的文章都是用底部的 RadioGroup + 页面部分的 Fragment 实现导航栏切换页面效果的。 然而底部的 RadioGroup 是如此麻烦,每个按钮的图片和文字...
    99+
    2024-04-02
  • android实现简单底部导航栏
    本文实例为大家分享了android实现底部导航栏的具体代码,供大家参考,具体内容如下 常见的底部导航栏 动态效果 实现步骤 1.底部导航栏样式 我们应该在项目的res文件夹下新建...
    99+
    2024-04-02
  • AndroidBottomNavigationView结合ViewPager实现底部导航栏步骤详解
    ViewPager2 介绍 ViewPager2 是基于 RecyclerView 重新编写的 ViewPager,比原有的 ViewPager 具有很多优势。 关于 ViewPag...
    99+
    2023-02-07
    Android BottomNavigationView底部导航栏 Android ViewPager底部导航栏
  • AmazeUI底部导航栏与分享按钮的实现方法
    这篇文章主要介绍AmazeUI底部导航栏与分享按钮的实现方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!手机端页面的底部导航栏,仿照安卓、IOS等Apps应用底部导航栏的设计。许许多多的移动端页面前端框架都有这个组...
    99+
    2023-06-09
  • Flutter自定义底部导航栏的方法
    本文实例为大家分享了Flutter自定义底部导航栏的具体代码,供大家参考,具体内容如下 文件结构: main.dart import 'package:flutter/materi...
    99+
    2024-04-02
  • ANDROID BottomNavigationBar底部导航栏的实现示例
    第一种介绍的就是使用开源库,因为使用开源库最简单,也更加的符合我们的审美标准,同时BottomNavigationBar还是符合当前的Material Design标准的。效果展示依赖compile'com.ashokvarma.andro...
    99+
    2023-05-30
    android bottomnavigationbar ott
  • Android使用RadioGroup实现底部导航栏
    RadioGroup实现底部导航栏效果,如图:: 实现可最基本的导航栏功能,不能左右滑动,只能点击内嵌的fragment的布局:<?xml version="1.0" encoding="utf-8"?>...
    99+
    2023-05-30
    radiogroup 导航栏 gr
  • flutter实现底部不规则导航栏
    本文实例为大家分享了flutter实现底部不规则导航栏的具体代码,供大家参考,具体内容如下 scafford的bottomNavigationBar参数赋值BottomAppBar可...
    99+
    2024-04-02
  • 超详细教程实现Vue底部导航栏TabBar
    目录项目介绍:项目目录:TabBar效果预览:TabBar实现思路一、如果在下方有一个单独的TabBar组件,如何封装二、TabBar中现实的内容由外界决定。三、自定义TabBarI...
    99+
    2024-04-02
  • Flutter如何实现底部导航栏创建
    Flutter如何实现底部导航栏创建,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。ConvexBottomBar是一个底部导航栏组件,用于展现凸起的TAB效果,...
    99+
    2023-06-26
  • CSS+HTML实现顶部导航栏的方法
    这篇文章主要介绍了CSS+HTML实现顶部导航栏的方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。html有什么特点1、简易性:超级文本标记语言版本升级采用超集方式,从而更...
    99+
    2023-06-14
  • react+zarm实现底部导航栏的示例代码
    目录需要实现的效果实现过程1.使用 prop-types 库进行类型检查2.使用 useNavigate3.编写标签栏组件4.使用标签栏组件5.添加对应的页面路由6.效果参考资料需要...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作