JetpackCompose - Scaffold布局简要入门
搭设基本 Scaffold 页面
scaffold 组件遵循 Material Design,可以协助开发者迅速构建对应框架页面
准备工作
首先在 drawable 文件夹内,添加几张 vector images,用作我们的底部导航栏图标
在主页面中声明数据类,表示单个图标以及其解释文本
data class Item(val name: String,val icon: Int
)
新增组件 mainBody,逐一添加三个底部按钮的图标
@Composable
fun mainBody() {// 存储当前选中的底部按钮的状态var selectedItem by remember {mutableStateOf(0)}// 三个底部按钮val items = listOf(Item("主页", R.drawable.home),Item("列表", R.drawable.list),Item("设置", R.drawable.setting))...
}
主体编写
首先是设置 topBar,即顶部导航栏对应按钮
代码很简单,但要注意使用的括号类型以及对应嵌套关系!
Scaffold(topBar = {TopAppBar(title = { Text("主页") },navigationIcon = {IconButton(onClick = { /*TODO*/ }) {Icon(Icons.Filled.Menu, null)}})},...
){}
紧接着在 topBar
属性后面写底部导航栏属性 bottomBar
items.forEachIndexed
按照索引渲染,vue 的 v-for
懂吧,就这个原理!
依次渲染 BottomNavigationItem
即可;
bottomBar = {BottomNavigation {items.forEachIndexed { index, item ->BottomNavigationItem(// selectedItem 是内置属性,表示当前选中的Item// onClick即切换当前激活的Itemselected = selectedItem == index,onClick = { selectedItem = index },// 这几个属性看看英文就懂了,不解释icon = { Icon(painterResource(item.icon), null) },alwaysShowLabel = false,label = { Text(item.name) })}}
}
这是总体的代码:
@Composable
fun mainBody() {var selectedItem by remember {mutableStateOf(0)}val items = listOf(Item("主页", R.drawable.home),Item("列表", R.drawable.list),Item("设置", R.drawable.setting))Scaffold(topBar = {TopAppBar(title = { Text("主页") },navigationIcon = {IconButton(onClick = { /*TODO*/ }) {Icon(Icons.Filled.Menu, null)}})},bottomBar = {BottomNavigation {items.forEachIndexed { index, item ->BottomNavigationItem(selected = selectedItem == index,onClick = { selectedItem = index },icon = { Icon(painterResource(item.icon), null) },alwaysShowLabel = false,label = { Text(item.name) })}}}) {// 在scaffold里面塞一个box,糊弄一下Box(modifier = Modifier.fillMaxSize(),contentAlignment = Alignment.Center) {Text(text = "主页界面")}}
}
JetpackCompose - Scaffold布局简要入门相关推荐
- Flutter中Scaffold布局的使用详解及实例代码
Flutter中Scaffold布局的使用详解及实例代码 Scaffold实现了基本的Material布局.只要是在Material中定义了的单个界面显示的布局控件元素,都可以使用Scaffold来绘 ...
- 彻底弄懂CSS盒子模式一(DIV布局快速入门)
彻底弄懂CSS盒子模式一(DIV布局快速入门) 作者:唐国辉 实例网页网址:http://www.blueidea.com/articleimg/2007/03/4545/css2.ht ...
- 分布式的,新一代版本控制系统Mercurial的介绍及简要入门
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 分布式的 ...
- Grid布局基础入门
Grid布局基础入门 一.容器属性 1.display属性 (1)display:gird :容器元素是块级元素 (2)display:inline-grid :容器元素是内联元素 2.grid-te ...
- 解决Flutter键盘弹起导致与输入框有间距问题(Flutter键盘弹起Scaffold布局流程)解析
一. 在项目中遇到了个如下问题: 当页面底部有个输入框,点击弹出键盘时:输入框与键盘之间有一段间距 通过排除,最后找到了问题根源所在:原因是使用了这个屏幕适配框架导致的.此框架通过直接修改Flutte ...
- html+css+布局从入门到精通,CSS+DIV网页样式布局实战从入门到精通 中文pdf扫描版[48MB]...
CSS+DIV网页样式布局实战从入门到精通通过精选案例引导读者深入学习,系统地介绍了利用CSS和DIV进行网页样式布局的相关知识和操作方法. 全书共21章.第1-5章主要介绍网页样式布局的基础知识,包 ...
- css盒子教程,彻底弄懂css盒子模式(div布局快速入门)_css教程
实现结构与表现分离 在真正开始布局实践之前,再来认识一件事--结构和表现相分离,这也用CSS布局的特色所在,结构与表现分离后,代码才简洁,更新才方便,这不正是我们学习CSS的目的所在吗?举个例来说P是 ...
- 网站开发之DIV+CSS简单布局网站入门篇(五)
这篇文章主要介绍如何使用DIV和CSS简单布局一个网站的首页,通常将网站划分为顶部(Logo.导航条).中部(页面主要内容.左右栏目).底部(制作方介绍.超链接).这是非常基础的一篇引入性文章,采用案 ...
- import java.awt.BorderLayout;_Swing-布局管理器之BorderLayout(边界布局)-入门
边界布局管理器(BorderLayout)把容器的的布局分为五个位置:CENTER.EAST.WEST.NORTH.SOUTH.依次对应为:上北(NORTH).下南(SOUTH).左西(WEST).右 ...
最新文章
- PAT甲级1083 List Grades:[C++题解]结构体、排序
- Linux下C++访问MySQL数据库
- rust游戏解封了吗_柚子君宾馆爬墙听隔壁声,潇天傲解封不罢休!继续专场嘲讽散打哥...
- 列表视图案例1——阅读古诗
- 【webpack系列】从零搭建 webpack4+react 脚手架(四)
- Django中的ORM进阶操作
- [渝粤教育] 广东-国家-开放大学 21秋期末考试大学英语210262k2
- 【深拷贝VS浅拷贝】------【巷子】
- 易点汽车租赁服务器无响应,全部服务器无响应!!!
- vb.net 教程 2-13 Windows API 函数
- ECshop新手入门模板制作教程[转载]
- 传说中的蝴蝶效应?--MAC地址克隆竟然惹祸了!
- Android 解决帧动画卡顿问题
- Vue实现web端仿网易云音乐 完成大部分功能
- animate将flash转换html,【An教程】快速入门Animate(原Adobe Flash)
- reduceByKeyAndWindow基于滑动窗口的热点搜索词实时统计(Scala版本)
- TextView(文本框)
- 执行力七准则---工作中如何破解困难提高执行力
- C语言 | 将密码译回原文,并输出密码和原文
- C/C++使用Windows的API实现共享内存以及同步