Compose - 交互组合项

按钮 Button

OutLinedButton带外边框、TextButton只是文字、IconButton只是图标形状。

Button(onClick = { }, //点击回调modifier = Modifier,enabled = true, //启用或禁用interactionSource = MutableInteractionSource(),elevation = ButtonDefaults.elevatedButtonElevation( //高度(阴影)defaultElevation = 10.dp,   //启用时pressedElevation = 0.dp,   //按下时focusedElevation = 10.dp,hoveredElevation = 10.dp,disabledElevation = 10.dp   //未启用时),shape = ButtonDefaults.shape,    //形状border = BorderStroke(width = 1.dp, color = Color.Red), //边框线colors = ButtonDefaults.buttonColors(   //颜色(还有textButtonColors、outlineButtonColors)containerColor = Color.Yellow,  //启用状态下的背景色contentColor = Color.Red,   //启动状态下的文本色disabledContainerColor = Color.Black,   //禁用状态下的背景色disabledContentColor = Color.Green  //禁用状态下的文本色),contentPadding = ButtonDefaults.ContentPadding,    //内容内间距
) {//子元素
}

输入框 TextField

var str by remember{ mutableStateOf("123456") }
TextField(modifier = Modifier,value = str,onValueChange = { str = it },textStyle = LocalTextStyle.current, //设置文本样式label = { Text(text = "标签文本") },    //显示在输入框边框上的提示文本placeholder = { Text(text = "提示文本") },  //内容为空时的提示文本supportingText = { Text(text = "输入框下面显示的文本") },   //leadingIcon = { Icon(imageVector = Icons.Default.Home, contentDescription = null) }, //左边图标trailingIcon = { Icon(imageVector = Icons.Default.Star, contentDescription = null) }, //右边图标isError = false,enabled = true, //是否启用readOnly =  false,  //是否只读,不可编辑,可复制singleLine = false,  //单行(设为true会忽略maxLines)maxLines = 5,   //最大行数visualTransformation = VisualTransformation.None,//输入类型(Text、Number、Phone、Email、Password、NumberPassword)keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Number),//键盘功能键监听keyboardActions = KeyboardActions(onDone = {}, onGo = {}, onNext = {}, onPrevious = {}, onSearch = {}, onSend = {}),shape = TextFieldDefaults.filledShape,colors = TextFieldDefaults.textFieldColors()
)

带边框的输入框 OutlinedTextField

代码可设置的内容同 TextField 一样。

基本输入框 BasicTextField

可设置内容少,适合自定义。

BasicTextField(modifier = Modifier,value = str,onValueChange = { str = it },textStyle = LocalTextStyle.current, //设置文本样式enabled = true, //是否启用readOnly =  false,  //是否只读,不可编辑,可复制singleLine = false,  //单行(设为true会忽略maxLines)maxLines = 5,   //最大行数minLines = 1,   //最小行数visualTransformation = VisualTransformation.None,//输入类型(Text、Number、Phone、Email、Password、NumberPassword)keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Number),//键盘功能键监听keyboardActions = KeyboardActions(onDone = {}, onGo = {}, onNext = {}, onPrevious = {}, onSearch = {}, onSend = {}),
)

拖动条 Slider

var state by remember{ mutableStateOf(0.0F) }
Slider(value = state,   //当前值valueRange = 0F..100F,  //可选值范围(默认0F..1F)steps = 4,  //步频(默认0,设置了就中间只有这个值可选拖到)enabled = true, //是否禁用onValueChange = { float ->state = float}
)

 范围拖动条 RangeSlider

@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun Demo() {var state by remember{ mutableStateOf(5F..10F) }RangeSlider(value = state,  //注意值是一个范围valueRange = 0F..30F,   //可选值范围(默认0F..1F)steps = 3,  //步频(默认0,设置了就中间只有这个值可选拖到)onValueChange = {state = it})
}

 复选框 CheckBox

fun Show() {val dataist = listOf("香菜", "酱油", "陈醋", "葱花", "蒜泥", "辣椒")Demo(dataist)
}@Composable
fun Demo(list: List<String>) {//根据选项列表,创建相同数量的布尔值集合val state = remember { list.map { false }.toMutableStateList() }//根据选项列表,创建相同数量的复选框Column {state.forEachIndexed { index, value ->Row {Checkbox(modifier = Modifier,checked = value,    //是否选中enabled = true, //是否启用colors = CheckboxDefaults.colors(),onCheckedChange = { boolean ->    //点击回调state[index] = boolean})Text(text = list[index], modifier = Modifier.align(Alignment.CenterVertically))}}}//log检查是否被改动val str = StringBuilder().apply {state.onEach { append("$it、")}}Log.e("-----------",  str.toString())
}

 单选框 RadioButton

@Preview(showBackground = true)
@Composable
fun Show() {val dataist = listOf("香菜", "酱油", "陈醋", "葱花", "蒜泥", "辣椒")Demo(dataist)
}@Composable
fun Demo(list: List<String>) {//记录当前被点击的索引(默认值设为0默认选中第一个,设为-1默认都不选中)var selectedIndex by remember { mutableStateOf(-1) }//根据选项列表,创建相同数量的单选框Column {list.forEachIndexed { index, _ ->Row {RadioButton(modifier = Modifier,selected = selectedIndex == index,   //是否选中enabled = true, //是否启用colors = RadioButtonDefaults.colors(),onClick = {selectedIndex = indexLog.e("-----------",  "点击的是第${index}个${list[index]}")})Text(text = list[index], modifier = Modifier.align(Alignment.CenterVertically))}}}
}

 开关 Switch

var state by remember { mutableStateOf(false) }
Switch(checked = state,    //控制开关onCheckedChange = { boolean ->  //点击事件state = boolean  //当进行切换操作时,更改状态},modifier = Modifier,thumbContent = null,enabled = true, //禁用(视觉和事件)colors = SwitchDefaults.colors(),   //不同状态下使用的颜色
//        interactionSource //可自定义不同状态下的外观和行为
)

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

各种RTMP直播流播放权限_音视频_数据花屏_问题检测与分析工具EasyRTMPClient

之前的一篇博客《网络摄像机IPCamera RTSP直播播放网络/权限/音视频数据/花屏问题检测与分析助手EasyRTSPClient》&#xff0c;我们介绍了RTSP流的检测和分析工具EasyRTSPClient&#xff0c;可以说已经是深入了我的平时运维工作中了&#xff0c;当我们发现有任何RTSP源或者摄像…

PPStream、PPlive等播放器花屏之解决办法

PPStream、PPlive等播放器花屏之解决办法 解决方法1&#xff1a;打开“Windows Meida Player”播放器&#xff0c;找到“工具”->“选项”->“性能”->“视频加速”&#xff0c;把“完全”滑块放到中间&#xff08;如果仍不行可调整到无&#xff09;&#xff0c;然后按…

传奇花屏Win10登陆游戏时花屏的解决方法

随着win10的流行&#xff0c;原来很多传奇版本不能适应&#xff0c;必竟传奇是一款比较老的游戏&#xff0c;很多电脑现在初装都已经是Win10了&#xff0c;win10系统&#xff0c;玩单机时点开始游戏就出现花屏&#xff0c;换分辩率800X600没有用。 Win10系统花屏是因为登陆器不…

用户观看视频业务出现花屏故障

组网情况 如图所示&#xff0c;Switch的一端和组播服务器相连&#xff0c;并且将GE1/0/0加入Eth-Trunk 0&#xff0c;另一端下挂用户终端&#xff0c;并且将GE1/0/2加入Eth-Trunk 1。在Switch上部署了组播业务&#xff0c;下挂用户终端可以进行视频点播。 现象描述 用户终端…

ffmpeg解码花屏

问题&#xff1a; 解码为YUV420转为Bitmap后显示在屏幕上时&#xff0c;有三分之二为花屏&#xff1a;如图&#xff1a; 首先用h264Visa分析帧&#xff1a; 已经读出了sps等信息&#xff0c;这些信在解码第一帧时被写入环境变量中&#xff0c;所以下边的帧不需要sps了 而且在…

《Zookeeper》源码分析(二十三)之 客户端的命令处理过程

目录 客户端的命令处理过程1. ZooKeeper.create()2. ClientCnxn.submitRequest()3. SendThread.run()4. ClientCnxnSocket.doTransport()5. SendThread.readResponse() 客户端的命令处理过程 以创建节点命令为例&#xff0c;整个过程流程如下&#xff1a; CliCommand命令在抽…

自己动手完成数据恢复

简易数据恢复 数据恢复数据恢复原理FAT文件系统 NTFS文件系统在NTFS文件系统中的原理分析对于文件删除有一段时间时&#xff1a; 基于软件的文件恢复总结 数据恢复 数据恢复是一个很大的概念&#xff0c;包括文件恢复&#xff0c;分区恢复&#xff0c;分区格式化恢复&#xff0…

深入探讨C存储类和存储期——Storage Duration

&#x1f517; 《C语言趣味教程》&#x1f448; 猛戳订阅&#xff01;&#xff01;&#xff01; ​—— 热门专栏《维生素C语言》的重制版 —— &#x1f4ad; 写在前面&#xff1a;这是一套 C 语言趣味教学专栏&#xff0c;目前正在火热连载中&#xff0c;欢迎猛戳订阅&#…

巨人网络305亿并购海外棋牌类游戏公司审核遭暂停

雷帝网 乐天 8月10日报道 巨人网络今日发布公告&#xff0c;宣布2018年8月10日收到中国证监会通知&#xff0c;决定对公司本次发行股份及支付现金购买资产并募集配套资金暨关联交易事项&#xff08;简称“本次重组”&#xff09;暂停审核。 据《上市公司重大资产重组管理办法》…

家乡的一种棋牌游戏

进来无事&#xff0c;想起了家乡的一种棋牌游戏&#xff0c;只记得小时候玩觉得蛮有趣&#xff0c;呵呵&#xff0c;现在想起就有一种用程序实现它的冲动&#xff0c; 呵呵&#xff0c;有想法就行动了&#xff0c;鉴于此款游戏由多人组合才能进行&#xff0c;所以还是选择C/S结…

C#棋牌游戏(如斗地主)

C#棋牌游戏 需求代码块定义枚举定义Card类定义CardLibrary类*定义Player类Main函数中实现结果展示 需求 需要定义Card类&#xff0c;该类包含特征&#xff1a; 每张牌的名字; 花色:红心、方块、梅花、黑桃; 牌号:1- 10、J、Q、K、小王、大王定义牌库CardLibrary类&#xff0c;…

自助棋牌室

1项目模块:商家模块(店铺展示、包厢展示、订单、订单搜索、店铺搜索) 用户模块(登录、注册、预约、充值、更换头像、续单、退单) 2项目技术:前端:js、jquery、vue2、vue3、后端:jdbc、java、servlet、mybatis 3功能实现: I 登录功能实现: 主要通过前后端交互实现,前后端实现流…

算法通过村第四关-栈白银笔记|手写栈操作

文章目录 前言1. 栈的基础概要1.1 栈的特征1.2 栈的操作1.3 Java中的栈 2. 栈的实现&#xff08;手写栈&#xff09;2.1 基于数组实现2.2 基于链表实现2.3 基于LinkedList实现 总结 前言 提示&#xff1a;我自己一个人的感觉很好 我并不想要拥有你 除非你比我的独处更加宜人 --…

【问题解决】无法加载文件 C:\Users\PJW\AppData\Roaming\npm\hpm.ps1,因为在此系统上禁止运行脚本

问题&#xff1a; PS Y:\BearPi-HM_Nano> hpm dist hpm : 无法加载文件 C:\Users\PJW\AppData\Roaming\npm\hpm.ps1&#xff0c;因为在此系统上禁止运行脚本。有关详细信息&#xff0c;请参阅 https:/go.microsoft.com/fwlink/?LinkID135170 中的 about_Execution_Policie…

intellj 无法运行程序

RT 在写作业的时候&#xff0c;导入老师项目&#xff0c;但是无法执行文件。 在这里插入图片描述 在项目模块中&#xff0c;添加内容根。添加目标源文件夹&#xff0c;解决问题。

【报错】nrm : 无法加载文件 …路径… ,因为在此系统上禁止运行脚本。

原因&#xff1a;核心是power shell的安全策略&#xff0c;将 nrm 命令视为了不安全脚本&#xff0c;不允许执行。只需要放开权限就行。 解决&#xff1a;通过管理员权限运行power shell&#xff0c;然后输入命令 set-ExecutionPolicy RemoteSigned 示例&#xff1a; 选择“是”…

com.android.phone已停止运行怎么解决方法,com.android.phone进程意外停止/已停止运行的原因及解决方法...

com.android.phone已停止怎么解决?小编带来了com.android.phone进程意外停止解决方法&#xff0c;有机友表示当手机刷机或root后就会出现“进程com.android.phone已停止”提示&#xff0c;不妨试一试下文的解决方法哦~ --原因 出现这种情况表明你的手机运行环境出现了比较大的…

在运行Android程序出现“×××已停止运行”

在运行Android程序时出现“已停止运行”的情况&#xff0c;点击“重新打开应用”后又提示“屡次停止运行”&#xff0c; 发现在Logcat中有这么一行提示&#xff1a;“Caused by: java.lang.NullPointerException: Attempt to invoke virtual method android.view.View android.…

无法加载文件 ,因为在此系统上禁止运行脚本

1 问题 在打开cmd命令行文件或者某个shell时&#xff0c;运行某个文件失败&#xff0c;并且显示无法加载文件 &#xff0c;因为在此系统上禁止运行脚本。可能是因为你当前的shell窗口权限不够导致&#xff0c;可以先打开管理员权限的shell之后&#xff0c;修改脚本运行的策略即…

因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies

项目场景&#xff1a; 提示&#xff1a;这里简述项目相关背景&#xff1a; npm安装包后无法使用&#xff0c; 例如&#xff1a;npm install -g json-server 安装成功后 使用json-server命令 报错&#xff0c;如果没有安装过此包&#xff0c;一般会提示不是内部或者外部命令 问…