Compose 基础组件

文章目录

  • Compose 基础组件
    • Modifier 修饰符
    • Scaffold 脚手架

Compose 基础组件

Modifier 修饰符

在传统视图体系中,使用XML文件描述组件的样式,而在Compose中使用Modifier,每个基础的Composable组件都有一个modifier参数,通过Modifier可以修改样式如边距、字体、位移等。

内边距:

@Stable
fun Modifier.padding(start: Dp = 0.dp,top: Dp = 0.dp,end: Dp = 0.dp,bottom: Dp = 0.dp
)@Stable
fun Modifier.padding(horizontal: Dp = 0.dp,vertical: Dp = 0.dp
)@Stable
fun Modifier.padding(all: Dp)

尺寸:

Text("hello world", modifier = Modifier.fillMaxSize()) // 填充父容器Text("hello world", modifier = Modifier.fillMaxWidth()) // 只充满宽
Text("hello world", modifier = Modifier.fillMaxHeight()) // 只充满高Text("hello world", modifier = Modifier.size(100.dp)) // 宽高都为100dp
Text("hello world", modifier = Modifier.size(width = 100.dp, height = 110.dp)) // 宽为100dp,高为110dp// 仅在Box组件中使用
Box {Spacer(Modifier.matchParentSize().background(Color.Red))Text("hello world", fontSize = 30.sp)
}

Row和Column的weight修饰符:

Row(Modifier.fillMaxSize().padding(top = 10.dp)) {Box(Modifier.weight(2f).height(50.dp).background(Color.Blue))Box(Modifier.weight(1f).height(50.dp).background(Color.Red))
}

点击:

Modifier.size(50.dp).background(Color.Green).clickable {// 执行点击事件需要的操作
}

圆角:

@Stable
fun Modifier.shadow(elevation: Dp, // 阴影的高度shape: Shape = RectangleShape, // Shapeclip: Boolean = elevation > 0.dp // 是否将内容图形裁剪到该形状
)

Scaffold 脚手架

在这里插入图片描述

在这里插入图片描述

class MainActivity : ComponentActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContent {val tabs = Tabs.values()var position by remember { mutableStateOf(Tabs.ONE) }Scaffold(// 标题栏topBar = {TopAppBar(title = { Text("标题") }, navigationIcon = {IconButton(onClick = { /*TODO*/ }) {Icon(Icons.Filled.ArrowBack, null)}})},// 悬浮按钮floatingActionButton = {FloatingActionButton(onClick = { /*TODO*/ }) {Text("确定")}},// 侧边栏drawerContent = {Column(modifier = Modifier.fillMaxSize(),verticalArrangement = Arrangement.Center,horizontalAlignment = Alignment.CenterHorizontally) {Text("侧边栏")}},// 底部导航栏bottomBar = {BottomNavigation(backgroundColor = Color.Gray) {tabs.forEach { tab ->BottomNavigationItem(label = { Text(tab.title) },icon = { Icon(painterResource(tab.icon), null) },selected = tab == position,onClick = { position = tab },alwaysShowLabel = false,selectedContentColor = Color.Red,unselectedContentColor = Color.White)}}}) { paddingValues ->// 内容Box(modifier = Modifier.padding(paddingValues)) {when (position) {Tabs.ONE -> OnePage()Tabs.TWO -> TwoPage()Tabs.THREE -> ThreePage()Tabs.FOUR -> FourPage()}}}}}
}
enum class Tabs(val title: String, @DrawableRes val icon: Int) {ONE("one", R.drawable.ic_one),TWO("two", R.drawable.ic_two),THREE("three", R.drawable.ic_three),FOUR("four", R.drawable.ic_four)
}@Composable
fun BaseDefault(content: String) {Row(modifier = Modifier.fillMaxSize(),horizontalArrangement = Arrangement.Center,verticalAlignment = Alignment.CenterVertically) {Text(content, fontSize = 50.sp)}
}@Composable
fun OnePage() {BaseDefault("OnePage")
}@Composable
fun TwoPage() {BaseDefault("TwoPage")
}@Composable
fun ThreePage() {BaseDefault("ThreePage")
}@Composable
fun FourPage() {BaseDefault("FourPage")
}

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

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

相关文章

使用CCS软件查看PID曲线

在刚开始学习PID的时候,都需要借助PID的曲线来理解比例,积分,微分这三个参数的具体作用。但是这些曲线生成一般都需要借助上位机软件或者在网页上才能实现。如果是在单片机上调试程序的话,想要看曲线,一般就是通过串口…

【YOLOv5】使用yolov5训练模型时报错合集

文章目录 前言问题1 -- VsCode终端无法进入Anaconda创建的虚拟环境【问题描述】【问题分析】【解决方式】方法一方法二 问题2 -- 怎么在VsCode中为项目配置Anaconda创建的虚拟环境【问题描述】【解决方式】 问题3 -- yolov5训练模型时报错RuntimeError: result type Float cant…

web自动化测试系列-selenium常用方法定位(五)

目录 1.selenium的定位方法 2.操作案例 3.实现代码 前面我们介绍了html页面元素主要是通过标签和属性来进行定位 ,只要满足唯一,无论是标签还是属性 ,都能进行定位 。当然 ,我们要通过selenium来进行定位 ,同样还是…

富格林:利用正规方法提升出金收益

富格林悉知,黄金现货是众多黄金产品当中交易规则优势较为明显的存在,尤其是近段时间的行情走势十分强劲,这使得投资者们获得了更充足的做单机会。然而,要想在炒黄金的市场上取得成功,除了对市场有深刻的理解外&#xf…

总结:css中水平居中

css水平居中功能很常用,但一直没有系统的总结过,今天来总结水平下常见的方式: 1. 文本或内联元素的居中: 使用 text-align: center; 属性可以让内部的文本和内联元素在容器中水平居中。 .container {text-align: center; }2. 块…

小公司应该选择docker swarm还是k8s

对于小公司选择 Docker Swarm 还是 Kubernetes(简称 K8s)作为容器编排平台,应考虑以下几个关键因素: 技术复杂度与学习曲线: Docker Swarm:因其与 Docker 紧密集成,使用 Docker Compose 语法作…

MongoDB聚合运算符:$ne

文章目录 语法举例 $ne聚合运算符用于比较两个值是否不相等&#xff0c;如果他们的值不相等&#xff0c;返回true&#xff1b;如果他们的值相等&#xff0c;返回false。 语法 { $ne: [ <expression1>, <expression2> ] }$ne可以用来比较任何类型的值&#xff0c;…

【C++风云录】梦幻般的机器人世界:探索ROS、PCL、OpenCV和更多顶尖技术

机器人技术与计算机视觉世界&#xff1a;ROS、PCL、OpenCV等综合指南 前言 本文旨在深入探讨ROS&#xff08;机器人操作系统&#xff09;、PCL&#xff08;点云库&#xff09;、OpenCV&#xff08;开源计算机视觉库&#xff09;、Eigen&#xff08;线性代数库&#xff09;、B…

基于SpringBoot的在线五子连珠的设计与实现,前端采用vue框架;后端采用SpringBoot,mybatis

介绍 基于SpringBoot的在线五子连珠的设计与实现&#xff0c;主要是设计一款五子棋游戏&#xff0c;涉及登录注册的功能&#xff0c;人机对战、联机对战和积分排行榜的功能。其中人机对战中&#xff0c;电脑采用的是采用了一种基于局面分析的评分算法来确定机器人的下一步落子…

线程池学习(通俗易懂)

线程池 线程池是什么ThreadPoolExecutor模拟实现线程池结语 线程池是什么 假设我们要频繁的创建线程和销毁线程,但是创建线程和销毁线程是有成本的. 所以我们可以提前创建一批线程,后面需要使用的时候,直接拿就可以了,这就是线程池. 当线程不再使用的时候,就归还到池子里.为什…

图片懒加载

看下tuniu的页面&#xff0c;这有两个属性src和data-src <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><t…

SpringBoot3 + Kotlin + mybatis-plus + Swagger3后端开发样例

前言&#xff1a; Kotlin 是一种在 JVM&#xff08;Java 虚拟机&#xff09;、Android 和浏览器端运行的静态类型编程语言。以下是关于 Kotlin 的总结介绍&#xff1a; 1、语言特性&#xff1a; 简洁性&#xff1a;Kotlin 旨在提供简洁且安全的代码&#xff0c;同时保持与 Jav…

什么是反向 ETL?为什么它很有价值?

提取、转换、加载 &#xff08;ETL&#xff09; 过程已经成熟并被广泛采用。 它只涉及从各种源系统中获取数据&#xff0c;将其转换为标准化数据模型&#xff0c;然后将其加载到数据仓库中。从那里&#xff0c;您的团队使用其商业智能 &#xff08;BI&#xff09; 和分析工具中…

云轴科技ZStack入选中国信通院《高质量数字化转型产品及服务全景图(2023年度)》

近日&#xff0c;由中国互联网协会主办、中国信通院承办的“2024高质量数字化转型创新发展大会”暨“铸基计划”年度会议在北京成功召开。 本次大会发布了2024年度行业数字化转型趋势&#xff0c;总结并展望了“铸基计划”2023年取得的工作成果及2024年的工作规划。同时&#…

谷粒商城实战(013 业务-认证服务-短信验证)

Java项目《谷粒商城》架构师级Java项目实战&#xff0c;对标阿里P6-P7&#xff0c;全网最强 总时长 104:45:00 共408P 此文章包含第211p-第p219的内容 介绍 认证中心要集成 社交登录、OAuth2.0、单点登录 等功能 OAuth 2.0&#xff1a; 问题解决&#xff1a; OAuth 2.0 主要…

10分钟1000台虚机 云安全效能双升 亚信安全新信舱无代理云平台快速适配版正式发布

新信舱 亚信安全新信舱无代理云平台快速适配版正式发布。在云平台依赖性、无代理部署速度、宿主机无代理AV防护和虚拟机缓存扫描性能等方面&#xff0c;新信舱无代理版本提供了无缝的可扩展性、低资源消耗并降低管理复杂性&#xff0c;让安全防护真正做到了 多快好省&#xff…

三七互娱,oppo,快手25届暑期实习内推

三七互娱&#xff0c;oppo&#xff0c;快手25届暑期实习内推 ①OPPO 【内推码】&#xff1a;X6866447 【一键内推】:https://careers.oppo.com/university/oppo/campus/post?shareId4546 【需求岗位】软件类、AI/算法类、硬件类、设计类、产品类 ②快手 【岗位】算法、工程、游…

Julia和Python线性矩阵机器学习和动态模型代码计算

&#x1f3af;要点 Julia和Python线性矩阵数学​方程​及代码​​&#xff1a;&#x1f3af;矢量计算&#xff1a;&#x1f58a;矢量&#xff1a;加法、标量向量乘法、内积 | &#x1f58a;线性&#xff1a;方程、泰勒近似、回归模型 | &#x1f58a;范数和距离&#xff1a;范…

从零实现一个扫雷游戏

今天来简单的实现一下一个扫雷游戏。 这里就需要大家有基础的c语言知识了。 头文件&#xff1a; #pragma once #include <stdio.h>#include <stdlib.h>#include <time.h>#define ROW 9#define COL 9#define ROWS ROW2#define COLS COL2#define EASY_COUNT…

Linux基本指令(1)

目录 ls指令&#xff1a; pwd命令&#xff1a; cd指令&#xff1a; touch指令&#xff1a; mkdir指令&#xff1a; rmdir指令&&rm指令&#xff1a; man指令&#xff1a; cp指令&#xff1a; ls指令&#xff1a; 语法&#xff1a;ls [选项][目录或者文件] 作用…