Compose | UI组件(三) | TextField() 输入框组件

文章目录

  • TextField() 简介
    • TextField() 输入框例子
    • TextField() 输入框添加装饰
    • OutlinedTextField 边框样式输入框
    • BasicTextField 输入框组件
  • 总结

TextField() 简介

Compose 中,TextField() 组件表示文本输入框

@ExperimentalMaterial3Api
@Composable
fun TextField(value: String,                                    //输入框中显示的值onValueChange: (String) -> Unit,                  //当输入框的值发生改变时触发的回调函数modifier: Modifier = Modifier,                    //修饰符enabled: Boolean = true,                          //设置启用readOnly: Boolean = false,                        //是否可编辑textStyle: TextStyle = LocalTextStyle.current,    //文字样式label: @Composable (() -> Unit)? = null,          //输入框前显示的标签文本placeholder: @Composable (() -> Unit)? = null,    //输入框中未输入内容时显示的提示文本leadingIcon: @Composable (() -> Unit)? = null,    //在输入框开头显示的前置图标trailingIcon: @Composable (() -> Unit)? = null,   //在输入框结尾显示的后置图标supportingText: @Composable (() -> Unit)? = null,isError: Boolean = false,                         //当值是否有错误的时候,底部指示器和尾部图标以错误颜色显示visualTransformation: VisualTransformation = VisualTransformation.None, //输入框内的文本视觉keyboardOptions: KeyboardOptions = KeyboardOptions.Default,   //软件键盘选项keyboardActions: KeyboardActions = KeyboardActions.Default,   //当输入发出一个IME动作时,相应的回调被调用singleLine: Boolean = false,                                  //输入框是否只能输入一行maxLines: Int = Int.MAX_VALUE,                                //输入框所能输入的最大行数interactionSource: MutableInteractionSource = remember { MutableInteractionSource() },                                                                //用于监控组件状态shape: Shape = TextFieldDefaults.filledShape,                 //输入框外观形状colors: TextFieldColors = TextFieldDefaults.textFieldColors() //输入框颜色组
) 

TextField() 输入框例子

//用户名
var username by remember{ mutableStateOf("") }TextField(value = username,onValueChange = {username = it},label = { Text(text = "用户名")},leadingIcon ={Icon(imageVector        = Icons.Filled.AccountBox,contentDescription = stringResource(id = R.string.app_user_name))},modifier = Modifier.fillMaxWidth()
)/*string文件*/
<string name="app_user_name">用户名</string>

注:
var username by remember{ mutableStateOf(“”) }

by 关键字表示 属性代理,可直接获取 mutableStateOf(“”) 的 String类型username属性

remember 表示可以缓存创建 状态 ,避免 重组 造成的数据丢失

Icon 代表图标组件

TextField() 输入框添加装饰

Column {//用户名var username by remember{ mutableStateOf("") }//密码var password by remember{ mutableStateOf("") }//输入框TextField(value = username,onValueChange = {username = it},label = { Text(text = "用户名")},leadingIcon ={Icon(imageVector        = Icons.Filled.AccountBox,contentDescription = stringResource(id = R.string.app_user_name))},modifier = Modifier.fillMaxWidth())TextField(value = password,onValueChange = {password = it},label = { Text(text = "密码")},trailingIcon = {IconButton(onClick = { }) {Icon(painter = painterResource(id = R.mipmap.iconeye),contentDescription = stringResource(id = R.string.app_user_password))}},modifier = Modifier.fillMaxWidth())
}

注:
Column 表示 垂直布局

leadingIcon 添加前置小图标

trailingIcon 添加后置小图标,在后置小图标上添加了 IconButton ,用于响应用户点击

OutlinedTextField 边框样式输入框

带有边框的输入框,其他用法和TextField基本一样

var textName by remember { mutableStateOf("") }OutlinedTextField(value = textName,onValueChange = {textName = it},label = { Text(text = stringResource(id = R.string.app_user_name))},modifier = Modifier.fillMaxWidth()
)/*string文件*/
<string name="app_user_name">用户名</string>

BasicTextField 输入框组件

BasicTextField 是更低级的Compose组件,与 TextField、OutlinedTextField 不同之处就是拥有更多自定义效果。

TextField、OutlinedTextField不可以直接修改高度,如果修改高度,输入框会被截断,BasicTextField 就可以定制这样的需求

var textSearchName by remember { mutableStateOf("") }Box(modifier = Modifier.fillMaxWidth().background(Color(0xFFD3D3D3)),contentAlignment = Alignment.Center){BasicTextField(value = textSearchName,onValueChange = {textSearchName = it},decorationBox = { innerTextField ->Row(verticalAlignment = Alignment.CenterVertically,modifier = Modifier.padding(horizontal = 10.dp)) {Icon(imageVector = Icons.Filled.Search,contentDescription = null)Box(modifier = Modifier.padding(horizontal = 10.dp),contentAlignment = Alignment.CenterStart) {if (textSearchName.isEmpty()) {Text(text = "请输入查找的内容",style = TextStyle(color = Color(0,0,0,128)),modifier = Modifier.fillMaxWidth())}innerTextField()}if(textSearchName.isNotEmpty()){IconButton(onClick = { textSearchName = "" },modifier = Modifier.size(16.dp)) {Icon(imageVector =Icons.Filled.Close,contentDescription = null)}}}},modifier = Modifier.padding(horizontal = 10.dp).background(Color.White, CircleShape).height(40.dp).fillMaxWidth())
}	

注:
Box 相当传统view里面的 FrameLayout

Row 表示水平方向的 LinearLayout

总结

  1. TextField() 代表默认输入框
  2. OutlinedTextField 代表有表框的输入框
  3. BasicTextField 代表底层输入框,区别于 TextField()、OutlinedTextField 可以自定义输入框

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

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

相关文章

一个基于electron自动化桌面应用-流程图构建

前期工作已搞定&#xff0c;现在可以搭建桌面应用了。这个阶段可以结合前面定义好的数据格式构建流程图。 模板 还是使用熟悉的技术栈vite react electron&#xff0c;模板 流程图 官方文档 自定义 节点样式 因为配置化的操作类型较多&#xff0c;因此可以利用自定义节…

【开源】基于JAVA语言的就医保险管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 科室档案模块2.2 医生档案模块2.3 预约挂号模块2.4 我的挂号模块 三、系统展示四、核心代码4.1 用户查询全部医生4.2 新增医生4.3 查询科室4.4 新增号源4.5 预约号源 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVue…

Atlassian Confluence Data Center and Server 权限提升漏洞复现(CVE-2023-22515)

0x01 产品简介 Atlassian Confluence是一款由Atlassian开发的企业团队协作和知识管理软件,提供了一个集中化的平台,用于创建、组织和共享团队的文档、知识库、项目计划和协作内容。是面向大型企业和组织的高可用性、可扩展性和高性能版本。 0x02 漏洞概述 Atlassian Confl…

在JavaScript中创建自定义错误

&#x1f9d1;‍&#x1f393; 个人主页&#xff1a;《爱蹦跶的大A阿》 &#x1f525;当前正在更新专栏&#xff1a;《VUE》 、《JavaScript保姆级教程》、《krpano》、《krpano中文文档》 ​ 目录 ✨ 前言 ✨ 正文 简介 创建自定义错误 自定义错误属性 instanceof 检…

STM正点mini-跑马灯

一.库函数版 1.硬件连接 &#xff27;&#xff30;&#xff29;&#xff2f;的输出方式&#xff1a;推挽输出 &#xff29;&#xff2f;口输出为高电平时&#xff0c;P-MOS置高&#xff0c;输出为&#xff11;&#xff0c;LED对应引脚处为高电平&#xff0c;而二极管正&#…

N-141基于springboot,vue网上拍卖平台

开发工具&#xff1a;IDEA 服务器&#xff1a;Tomcat9.0&#xff0c; jdk1.8 项目构建&#xff1a;maven 数据库&#xff1a;mysql5.7 系统分前后台&#xff0c;项目采用前后端分离 前端技术&#xff1a;vueelementUI 服务端技术&#xff1a;springbootmybatis-plusredi…

虚拟局域网、广播域、冲突域

目录 广播风暴 安全问题 虚拟局域网 VLAN 虚拟局域网优点 划分虚拟局域网的方法 基于交换机端口的方法 基于计算机网卡的 MAC 地址的方法 基于协议类型的方法 基于 IP 子网地址的方法 基于高层应用或服务的方法 虚拟局域网使用的以太网帧格式 以太网存在的主要问题&…

Linux halt命令教程:如何正确地停止系统(附实例详解和注意事项)

Linux halt命令介绍 halt 命令&#xff0c;全称 stand still&#xff0c;用于让系统立刻停止。在默认情况下&#xff0c;halt 命令会以启动一个新的运行级别来停止系统。这通常会关闭所有正在运行的服务。如果我们使用 -p 选项&#xff08;相当于 --poweroff&#xff09;&…

STM32+ESP8266 实现物联网设备节点

一、硬件准备 本设备利用STM32F103ZE和ESP8266实现了一个基本的物联网节点&#xff0c;所需硬件如下 1、STM32F103ZE开发板 2、ESP8266模组&#xff08;uart接口&#xff09; 3、ST-LINK&#xff08;下载用&#xff09; 4、USB转串口模块&#xff08;调试用&#xff09; 二…

【文本到上下文 #9】NLP中的BERT和迁移学习

​ ​ 一、说明 ​BERT&#xff1a;适合所有人的架构概述&#xff1a;我们将分解 BERT 的核心组件&#xff0c;解释该模型如何改变机器理解人类语言的方式&#xff0c;以及为什么它比以前的模型有重大进步。    ​BERT的变体&#xff1a; 在BERT取得成功之后&#xff0c;已…

matplotlib 波士顿房价数据及可视化 Tensorflow 2.4.0

matplotlib 波士顿房价数据及可视化 Tensorflow 2.4.0 目录 matplotlib 波士顿房价数据及可视化 Tensorflow 2.4.0 1. 认识 1.1 kears 1.2 kears常用数据集 2. 波士顿房价数据及可视化 2.1 下载波士顿房价数据集 2.2 展示一个属性对房价的影响 2.3 将是三个属性全部展…

SpringBoot中实现阿里云OSS对象存储

背景 在业务中我们往往需要上传文件如图片&#xff0c;文件上传&#xff0c;是指将本地图片、视频、音频等文件上传到服务器上&#xff0c;可以供其他用户浏览或下载的过程。文件上传在项目中应用非常广泛&#xff0c;我们经常发抖音、发朋友圈都用到了文件上传功能。 实现文件…

CTF CRYPTO 密码学-6

题目名称&#xff1a;敲击 题目描述&#xff1a; 方方格格&#xff0c;不断敲击 “wdvtdz qsxdr werdzxc esxcfr uygbn” 解题过程&#xff1a; step1&#xff1a;根据题目描述敲击&#xff0c;wdvtdz对应的字符为x step2&#xff1a;依此类推r&#xff0c;z&#xff0c;o&…

【现代密码学基础】详解完美安全与香农定理

目录 一. 介绍 二. 完美安全的密钥与消息空间 三. 完美安全的密钥长度 四. 最优的完美安全方案 五. 香农定理 &#xff08;1&#xff09;理论分析 &#xff08;2&#xff09;严格的正向证明 &#xff08;3&#xff09;严格的反向证明 六. 小结 一. 介绍 一次一密方案…

【Android】非线性方程的求解寻根

目录 前言&#xff1a; 一、Apache-commons-math3介绍 二、具体简单实例 2.1 导入函数类 2.2 定义函数接口 2.3 使用求解器 2.3.1 布伦特法&#xff08;Brent&#xff09; 2.3.2 米勒&#xff08;Muller&#xff09;法 2.3.3 Newton-Raphson法 前言&#xff1a; 最近…

【GitHub项目推荐--不错的 TypeScript 学习项目】【转载】

在线白板工具 Excalidraw 标星 33k&#xff0c;是一款非常轻量的在线白板工具&#xff0c;可以直接在浏览器打开&#xff0c;轻松绘制具有手绘风格的图形。 如下图所示&#xff0c;Excalidraw 支持最常用的图形元素&#xff1a;方框、圆、菱形、线&#xff0c;可以方便的使用…

CSS设置单行文字水平垂直居中的方法

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>单行文字水平垂直居中</title><style>div {/* 给div设置宽高 */width: 400px;height: 200px;margin: 100px auto;background-color: red;/…

Spark——Spark读写Greenplum/Greenplum-Spark Connector高速写Greenplum

文章目录 问题背景解决方式代码实现Spark写GreenplumSpark读Greenplum 参考 问题背景 通过数据平台上的DataX把Hive表数据同步至Greenplum&#xff08;因为DataX原生不支持Greenplum Writer&#xff0c;只能采用PostgreSQL驱动的方式&#xff09;&#xff0c;但是同步速度太慢…

Mybatis的XML配置

MyBatis 是一个持久层框架&#xff0c;通过 XML 配置文件来定义 SQL 映射和结果的映射规则。以下是关于 MyBatis XML 配置文件的详细说明&#xff1a; 基本结构&#xff1a; XML 配置文件通常包含 <mapper>、<resultMap>、<typeAliases> 等元素。 2. mappe…

NoSQL基本内容

第一章 NoSQL 1.1 什么是NoSQL NoSQL&#xff08;Not Only SQL&#xff09;即不仅仅是SQL&#xff0c;泛指非关系型的数据库&#xff0c;它可以作为关系型数据库的良好补充。随着互联网web2.0网站的兴起&#xff0c;非关系型的数据库现在成了一个极其热门的新领域&#xff0c;…