在 Jetpack Compose 中使用 BottomAppBar

简介

Jetpack Compose 是一个现代化的、声明式的 UI 工具包,它使我们能够更方便地构建 Android 的用户界面。本篇文章将介绍如何在 Jetpack Compose 中使用 BottomAppBar 来创建底部应用栏。


什么是 BottomAppBar?

BottomAppBar 是一个在屏幕底部的应用栏,提供了在 Material Design 风格的应用中实现导航和执行操作的一种方式。在 BottomAppBar 中,我们通常会放置一些操作按钮,如 FloatingActionButton、菜单项、以及其他可交互的图标。

如何使用 BottomAppBar

为了使用 BottomAppBar,我们需要将它作为 Scaffold 函数的 bottomBar 参数。这里有一个简单的示例:

@Preview
@Composable
fun BottomAppBar(){Scaffold(floatingActionButton = {//   Icon(Icons.Default.Home, contentDescription = "Add")FloatingActionButton(onClick = { }) {Icon(Icons.Default.Add, contentDescription = "Add")}}, floatingActionButtonPosition = FabPosition.Center, isFloatingActionButtonDocked = true, bottomBar = {BottomAppBar(cutoutShape = CircleShape) {IconButton(onClick = { /*TODO*/ }) {Icon(Icons.Filled.Menu,contentDescription = null)}Spacer(modifier = Modifier.weight(1f,true))IconButton(onClick = { /*TODO*/ }) {Icon(imageVector = Icons.Filled.Favorite, contentDescription = "Favorite")}IconButton(onClick = { /*TODO*/ }) {Icon(imageVector = Icons.Filled.MoreVert , contentDescription ="More options" )}}}){ innerPadding ->BodyContent(Modifier.padding(innerPadding))}
}@Composable
fun BodyContent(padding: Modifier=Modifier) {}

在上面的代码中,Scaffold 组件是一个实现基本的 Material Design 布局结构的 Composable 函数。它有一些参数可以配置,比如:floatingActionButtonfloatingActionButtonPositionisFloatingActionButtonDockedbottomBar

BottomAppBar 中,我们添加了一个导航按钮和两个操作按钮。所有的按钮都使用 IconButton 实现,里面包含一个 Icon。我们还用 Spacer 将操作按钮挤到右侧。

同时,我们在 Scaffold 中添加了一个 FloatingActionButton,并将其位置设置在 BottomAppBar 的中间。这时,我们需要通过 cutoutShape 参数为 BottomAppBar 设置一个适当的形状以适应 FloatingActionButton。在这个例子中,我们使用了 CircleShape

结论

BottomAppBar 提供了在 Jetpack Compose 中实现底部应用栏的方法。我们可以通过配置 Scaffold 中的 bottomBar 参数以及添加相关的操作按钮,来创建一个符合 Material Design 规范的底部应用栏。

这只是一个简单的例子,实际上,Jetpack Compose 提供了很多灵活的方式来实现你的设计。你可以根据需求,添加更多的操作按钮,或者自定义 FloatingActionButton 的形状和位置等。在探索的过程中,你可能会发现更多有趣和强大的功能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/15714.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot原理分析 | 安全框架:Security

💗wei_shuo的个人主页 💫wei_shuo的学习社区 🌐Hello World ! Security Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架;提供一组可以在Spring应用上下文中配置的Be…

zookeper第二三课-Zookeeper经典应用场景实战

1. Zookeeper Java客户端实战 ZooKeeper应用的开发主要通过Java客户端API去连接和操作ZooKeeper集群。可供选择的Java客户端API有: ZooKeeper官方的Java客户端API。第三方的Java客户端API,比如Curator。 ZooKeeper官方的客户端API提供了基本的操作。例…

干货 | 智能网联汽车大数据基础平台构建研究

以下内容整理自大数据能力提升项目必修课《大数据系统基础》同学们的期末答辩汇报。 各位老师大家上午好,我们组的题目是智能网联汽车大数据基础平台的构建。我们的指导企业是西部智联。我们的汇报将从这五个方面进行展开,第一个方面是项目背景与需求分析…

【NAS群晖drive异地访问】远程连接drive挂载电脑硬盘

文章目录 前言1.群晖Synology Drive套件的安装1.1 安装Synology Drive套件1.2 设置Synology Drive套件1.3 局域网内电脑测试和使用 2.使用cpolar远程访问内网Synology Drive2.1 Cpolar云端设置2.2 Cpolar本地设置2.3 测试和使用 3. 结语 转载自cpolar极点云文章:【群…

2023年前端面试题汇总-数据结构(二叉树)

对于树这个结构,最常见的就是二叉树。我们除了需要了解二叉树的基本操作之外,还需要了解一些特殊的二叉树,比如二叉搜索树、平衡二叉树等,另外还要熟悉二叉树的遍历方式,比如前序遍历、中序遍历、后序遍历、层序遍历。另外还要知道二叉树的常用遍历的方式:深度优先遍历和…

Redis常用面试题

Redis为什么执行这么快? 1.基于内存存储实现。 我们都知道内存读写比在磁盘快很多的,Redis基于内存储存实现的数据。相对于数据库存在磁盘的MySql数据库,剩余磁盘I/O的消耗 2.redis是单线程模型的,而单线程避免了CPU不必要的上…

macOS Sonoma 14 beta 3 (23A5286g) ISO、IPSW、PKG 下载

macOS Sonoma 14 beta 3 (23A5286g) ISO、IPSW、PKG 下载,7 月 5 日(北京时间今日凌晨)已发布 本站下载的 macOS 软件包,既可以拖拽到 Applications(应用程序)下直接安装,也可以制作启动 U 盘安…

ITIL 4—发布管理实践

2 基本信息 2.1 目的和描述 关键信息 发布管理实践的目的是使新的和变更的服务及功能均可用。 发布管理实践是为了确保组织及其服务使用者在符合组织政策和协议的前提下,服务可以正常使用而产生的最佳实践。 传统场景下,服务组件(包括基…

THREE.JS镜头随鼠标晃动效果

为了让动画更灵活并且简单 借助gsap让其具有更多可能,在未来更容易扩充其他动效 gsap Dom跟随鼠标移动 gsap.quickTo() 首先要监听鼠标移动,并且将移动的值转换到 -1 和 1 之间 方便处理 private mousemove(e: MouseEvent) {const x (e.clientX / inner…

HTTP 协议的基本格式

目录 1.基本格式 首行 请求报头 关于cookie 关于Referer 响应的报文 首行 关于状态码 1.基本格式 让我们来看看fiddler抓包的下的实际报文情况 首行 在http1.1中,有如下方法 POST、GET、HEAD、PUT、OPTIONS、DELETE、TRACE、CONNECT 在我们抓包遇到的环境中&…

js深拷贝、js使用递归实现深拷贝

相信看到这篇文章之前你应该多多少少了解过什么是深拷贝了为什么要什么拷贝了 这里就不介绍什么是深拷贝、浅拷贝了 最优解深拷贝方法:递归 这里为了方便直接在vue的页面里面演示了,在其他js文件中使用注意下this mounted() {const obj {str: "字…

Elasticsearch【集群概念、搭建集群】(七)-全面详解(学习总结---从入门到深化)

目录 Elasticsearch集群_概念 Elasticsearch集群_搭建集群 Elasticsearch集群_概念 在单台ES服务器上,随着一个索引内数据的增多,会产生存储、效率、安全等问题。 1、假设项目中有一个500G大小的索引,但我们只有几台200G硬盘 的服务器&am…