Jetpack Compose——TopAppBar(顶部应用程序栏)、BottomAppBar(底部应用程序栏)
该博客基于:compose_version = '1.1.0-beta01'
TopAppBar:位于屏幕的顶部。一般包含标题,导航图标和其他的更多操作等
BottomAppBar:位于屏幕的底部,一般显示导航和按键操作
TopAppBar
首先看看TopAppBar的参数:有两种参数类型
TopAppBar(modifier: Modifier = Modifier,//布局修饰backgroundColor: Color = MaterialTheme.colors.primarySurface,//appbar背景颜色contentColor: Color = contentColorFor(backgroundColor),//子级内容颜色elevation: Dp = AppBarDefaults.TopAppBarElevation,//标题栏阴影效果contentPadding: PaddingValues = AppBarDefaults.ContentPadding,//内边距content: @Composable RowScope.() -> Unit//appbar的内容,默认布局是Row,内容将被水平放置
)
TopAppBar(title: @Composable () -> Unit,//appbar的中心标题modifier: Modifier = Modifier,//布局修饰navigationIcon: @Composable (() -> Unit)? = null,//导航图标actions: @Composable RowScope.() -> Unit = {},//其他行为,例如设置,分享等backgroundColor: Color = MaterialTheme.colors.primarySurface,//appbar背景颜色contentColor: Color = contentColorFor(backgroundColor),//子级内容颜色elevation: Dp = AppBarDefaults.TopAppBarElevation//标题栏阴影效果
)
简单使用:
@Composable
fun BarTest() {val context = LocalContext.currentColumn(modifier = Modifier.fillMaxSize().background(Color.LightGray)) {//自定义的appbarTopAppBar(modifier = Modifier.fillMaxWidth(),backgroundColor = Color.White,//背景色contentColor = Color.Red, //子级内容颜色contentPadding = PaddingValues(4.dp)//AppBar的内边距) {//返回按钮IconButton(onClick = { Toast.makeText(context, "返回", Toast.LENGTH_SHORT).show() }) {Icon(Icons.Filled.ArrowBack, null)}//标题Text("contentPadding的标题",modifier = Modifier.fillMaxWidth(0.75f).wrapContentSize(Alignment.Center))//右侧分享按钮IconButton(onClick = {Toast.makeText(context, "分享", Toast.LENGTH_SHORT).show()}) {Icon(Icons.Filled.Share, null)}//右侧设置按钮IconButton(onClick = {Toast.makeText(context, "设置", Toast.LENGTH_SHORT).show()}) {Icon(Icons.Filled.Settings, null)}}Spacer(modifier = Modifier.requiredHeight(10.dp))//有标题、导航图标和动作的插槽TopAppBar(//标题title = {Text("有actions的标题",modifier = Modifier.fillMaxWidth().wrapContentSize(Alignment.Center)//设置标题文本居中显示)},//布局修饰modifier = Modifier.fillMaxWidth(),//导航图标(返回icon键)navigationIcon = {IconButton(onClick = {Toast.makeText(context, "返回", Toast.LENGTH_SHORT).show()}) {Icon(Icons.Filled.ArrowBack, null)}},//其他行为(分享,设置等)actions = {IconButton(onClick = {Toast.makeText(context, "分享", Toast.LENGTH_SHORT).show()}) {Icon(Icons.Filled.Share, null)}IconButton(onClick = {Toast.makeText(context, "设置", Toast.LENGTH_SHORT).show()}) {Icon(Icons.Filled.Settings, null)}},backgroundColor = Color.White,//背景色contentColor = Color.Red, //子级内容颜色)Spacer(modifier = Modifier.requiredHeight(10.dp))}}
效果如图:
BottomAppBar
先看看BottomAppBar参数:
BottomAppBar(modifier: Modifier = Modifier,backgroundColor: Color = MaterialTheme.colors.primarySurface,//appbar背景颜色contentColor: Color = contentColorFor(backgroundColor),//子级内容颜色cutoutShape: Shape? = null,//边框形状elevation: Dp = AppBarDefaults.BottomAppBarElevation,//标题栏阴影效果contentPadding: PaddingValues = AppBarDefaults.ContentPadding,//内边距content: @Composable RowScope.() -> Unit//默认布局是一个Row,所以里面的内容将被水平放置
)
使用:
//底部AppbarBottomAppBar(modifier = Modifier.fillMaxWidth(1.0f).wrapContentSize(Alignment.Center),backgroundColor = Color.White,//背景色contentColor = Color.Red, //子级内容颜色) {IconButton(onClick = {Toast.makeText(context, "首页", Toast.LENGTH_SHORT).show()}, modifier = Modifier.fillMaxWidth(0.5f).wrapContentSize(Alignment.Center)) {Icon(Icons.Filled.Home, null)}IconButton(onClick = {Toast.makeText(context, "帮助", Toast.LENGTH_SHORT).show()}, modifier = Modifier.fillMaxWidth(0.5f).wrapContentSize(Alignment.Center)) {Icon(Icons.Filled.Help, null)}}
效果如图:
最后附上TopAppBar和BottomAppBar的代码:
@Composable
fun BarTest() {val context = LocalContext.currentColumn(modifier = Modifier.fillMaxSize().background(Color.LightGray)) {//自定义的appbarTopAppBar(modifier = Modifier.fillMaxWidth(),backgroundColor = Color.White,//背景色contentColor = Color.Red, //子级内容颜色contentPadding = PaddingValues(4.dp)//AppBar的内边距) {//返回按钮IconButton(onClick = { Toast.makeText(context, "返回", Toast.LENGTH_SHORT).show() }) {Icon(Icons.Filled.ArrowBack, null)}//标题Text("contentPadding的标题",modifier = Modifier.fillMaxWidth(0.75f).wrapContentSize(Alignment.Center))//右侧分享按钮IconButton(onClick = {Toast.makeText(context, "分享", Toast.LENGTH_SHORT).show()}) {Icon(Icons.Filled.Share, null)}//右侧设置按钮IconButton(onClick = {Toast.makeText(context, "设置", Toast.LENGTH_SHORT).show()}) {Icon(Icons.Filled.Settings, null)}}Spacer(modifier = Modifier.requiredHeight(10.dp))//有标题、导航图标和动作的插槽TopAppBar(//标题title = {Text("有actions的标题",modifier = Modifier.fillMaxWidth().wrapContentSize(Alignment.Center)//设置标题文本居中显示)},//布局修饰modifier = Modifier.fillMaxWidth(),//导航图标(返回icon键)navigationIcon = {IconButton(onClick = {Toast.makeText(context, "返回", Toast.LENGTH_SHORT).show()}) {Icon(Icons.Filled.ArrowBack, null)}},//其他行为(分享,设置等)actions = {IconButton(onClick = {Toast.makeText(context, "分享", Toast.LENGTH_SHORT).show()}) {Icon(Icons.Filled.Share, null)}IconButton(onClick = {Toast.makeText(context, "设置", Toast.LENGTH_SHORT).show()}) {Icon(Icons.Filled.Settings, null)}},backgroundColor = Color.White,//背景色contentColor = Color.Red, //子级内容颜色)Spacer(modifier = Modifier.requiredHeight(10.dp))//底部AppbarBottomAppBar(modifier = Modifier.fillMaxWidth(1.0f).wrapContentSize(Alignment.Center),backgroundColor = Color.White,//背景色contentColor = Color.Red, //子级内容颜色) {IconButton(onClick = {Toast.makeText(context, "首页", Toast.LENGTH_SHORT).show()}, modifier = Modifier.fillMaxWidth(0.5f).wrapContentSize(Alignment.Center)) {Icon(Icons.Filled.Home, null)}IconButton(onClick = {Toast.makeText(context, "帮助", Toast.LENGTH_SHORT).show()}, modifier = Modifier.fillMaxWidth(0.5f).wrapContentSize(Alignment.Center)) {Icon(Icons.Filled.Help, null)}}}}
Jetpack Compose——TopAppBar(顶部应用程序栏)、BottomAppBar(底部应用程序栏)相关推荐
- Jetpack Compose 无限加载列表(滚到底部自动加载更多)
Android 中使用 ListView 或者 RecycleView 经常有滚动到底部自动 LoadMore 的需求,那么在 Compose 中该如何实现呢? 两种方法可供选择: 基于 paging ...
- Jetpack Compose教程-水位控制小部件
Jetpack Compose教程-水位控制小部件 Apple的应用程序和小部件一直是设计的典范,也给我们的"复制系列:活动应用"和"卡片应用"提供了灵感.当他 ...
- Android进阶之路 - 顶部状态栏、底部虚拟导航栏相关操作
快过年了,2018希望我们每个人都健康,开心,同时继续上进 ! 2020补充:基本包含了我几年在开发中用到的关于顶部状态栏和底部导航栏的绝大部分功能 ~ 顶部状态栏 状态栏是否可见 获取状态栏高度 隐 ...
- 小程序scroll-view,滚动到最低_小程序滚动到底部
小程序scroll-view,滚动到最低_小程序滚动到底部 小程序滚动条,滚到最底部解决方案1 小程序滚动到底部使用Scorll-view实现方案: scrill-view:组件要固定高度. scro ...
- php 实现tab切换_微信小程序实例:实现顶部tab切换以及滑动切换时导航栏会随着移动的效果(代码)...
本篇文章给大家带来的内容是关于微信小程序实例:实现顶部tab切换以及滑动切换时导航栏会随着移动的效果(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 实现的效果: js: Pa ...
- 微信小程序实现自定义顶部导航栏(选项卡),固定导航栏和可滑动导航栏
微信小程序实现自定义顶部导航栏(选项卡),固定导航栏和可滑动导航栏 固定导航栏 可滑动导航栏 顶部导航栏的需求实现: 顶部导航栏由列表渲染,通过tabclick点击事件改变activeIndex变量的 ...
- Jetpack Compose中的Accompanist
accompanist是Jetpack Compose官方提供的一个辅助工具库,以提供那些在Jetpack Compose sdk中目前还没有的功能API. 权限 依赖配置: repositories ...
- 安卓开发: Jetpack compose + kotlin 实现 俄罗斯方块游戏
文章目录 前言 俄罗斯方块开发文档 1.摘要 2.开发工具选取 2.1.Compose 的自身优点 2.2.数据驱动界面 3.设计需求 3.1.功能需求 3.1.1.基本游戏功能 3.1.2.拓展功能 ...
- Jetpack compose 康奈尔笔记
快速上手 条目 内容 是什么 原生Android界面构建工具包 优势 -更少的代码 -直观(状态变化,自动更新界面) -可以预览 -Material design 什么是可组合函数 -用函数描述外观和 ...
最新文章
- 高光荣教授逝世:他是新中国首位MIT计算机博士,开创数据流体系结构
- 谷歌最新视频抠图术:影子烟雾都能抠,添加水印更顺滑,UP主剪辑利器 | 开源...
- 微信公众号开发(python+werobot)-自动回复
- 云原生演进趋势下传统数据库升级实践
- 将ubuntu配置为路由器_“名酒为王”时代来临但资源将尽,看泸州老窖如何进行“名酒资源再配置”丨深度观察...
- BUG类算法研究分析
- keytool 错误: java.io.IOException: Keystore was tampered with, or password was incorrect → 解决办法
- mysql 首次连接慢_mybatis+mysql,第一次数据库连接很慢怎么回事?
- 深入理解Yii2.0 (3)行为(Behavior)
- pywin32、win32api、win32gui、win32com、win32con 都是啥?
- 桥本木分式(使用回溯法求解)
- git 中 HEAD 概念
- python用谷歌内核制作浏览器_用cef Python打造自己的浏览器
- ocaml_管理OCaml软件包的好工具
- 乐视tv真机开发调试,乐视盒子开发者模式,乐视android 开发调试模式
- 稿费一般多少钱一千字_为什么我在刊物发表文章会给稿费千字多少元不等,而网上却没有?...
- HDU 1348(Wall)
- 对于团队的一些感悟感想
- c语言里函数rand()和srand()的用法
- QQ浏览器性能提升之路-windows性能分析工具篇
热门文章
- nginx安装过程及常用命令
- 日本人做的卡通风格的3D游戏——Okami
- 基于网易云音乐API的微信小程序——zwhdlb的音乐平台
- Linux 系统运维学习方法汇总
- QR分解(正交三角分解)
- 关于SuperSlide的使用方法 以及 调用属性参数的介绍
- 跨模态行人重识别cm-SSFT:Cross-modality Person re-identification with Shared-Specific Feature Transfer 学习笔记
- 基于orCAD Capture CIS下的有刷直流电机驱动仿真
- Minecraft 1.19.2 Fabric模组开发 10.建筑生成
- ESP32开发一_开发环境