Android Compose 文本输入框TextField使用详解

一、 TextField介绍

TextField 允许用户输入和修改文本,也就是文本输入框。

TextField 分为三种:

  • TextField是默认样式
  • OutlinedTextField 是轮廓样式版本
  • BasicTextField 允许用户通过硬件或软件键盘修改文本,但不提供提示或占位符等装饰,一般用于自定义输入框

二、TextField基本使用

1、添加TextField文本输入框

@Composable
fun TextFieldView(){TextField(value = "Hello Compose", onValueChange ={})
}

在这里插入图片描述
此时是不能输入和删除文本的,需要动态修改TextField的value才能输入和删除文本。

2、动态修改TextField的value

@Composable
fun TextFieldView() {var inputPhone by remember { mutableStateOf("Hello\nWorld\nInvisible") }TextField(value = inputPhone,onValueChange = {inputPhone = it})
}

在这里插入图片描述
现在可以修改和删除文本框的内容了

3、修改文字的大小和颜色

通过TextField的textStyle属性可以修改文字的大小和颜色

@Composable
fun TextFieldView() {var inputPhone by remember { mutableStateOf("Hello\nWorld\nInvisible") }TextField(value = inputPhone,onValueChange = {inputPhone = it},textStyle = TextStyle(fontSize = 16.sp, color = Color.Blue),)
}

在这里插入图片描述

4、修改输入框的背景颜色

通过TextField的colors属性可以修改输入框的背景颜色

@Composable
fun TextFieldView() {var inputPhone by remember { mutableStateOf("Hello\nWorld\nInvisible") }TextField(value = inputPhone,onValueChange = {inputPhone = it},textStyle = TextStyle(fontSize = 16.sp, color = Color.Blue),colors = TextFieldDefaults.colors(focusedIndicatorColor = Color.Transparent,disabledIndicatorColor = Color.Transparent,unfocusedIndicatorColor = Color.Transparent,focusedContainerColor = Color.Green,disabledContainerColor = Color.Green,unfocusedContainerColor = Color.Green,),)
}

在这里插入图片描述

5、添加hint提示文字

@Composable
fun TextFieldView() {var inputPhone by remember { mutableStateOf("") }TextField(value = inputPhone,onValueChange = {inputPhone = it},textStyle = TextStyle(fontSize = 16.sp, color = Color.Blue),colors = TextFieldDefaults.colors(focusedIndicatorColor = Color.Transparent,disabledIndicatorColor = Color.Transparent,unfocusedIndicatorColor = Color.Transparent,focusedContainerColor = Color.Green,disabledContainerColor = Color.Green,unfocusedContainerColor = Color.Green,),placeholder = {Text(text = "请输入手机号",color = Color.Red,)})
}

在这里插入图片描述

6、设置文本单行显示

通过设置singleLine属性,可以设置文本只显示一行

@Composable
fun TextFieldView() {var inputPhone by remember { mutableStateOf("") }TextField(value = inputPhone,onValueChange = {inputPhone = it},textStyle = TextStyle(fontSize = 16.sp, color = Color.Blue),colors = TextFieldDefaults.colors(focusedIndicatorColor = Color.Transparent,disabledIndicatorColor = Color.Transparent,unfocusedIndicatorColor = Color.Transparent,focusedContainerColor = Color.Green,disabledContainerColor = Color.Green,unfocusedContainerColor = Color.Green,),singleLine = true,placeholder = {Text(text = "请输入手机号",color = Color.Red,)})
}

在这里插入图片描述

7、软键盘显示手机号输入

修改keyboardOptions属性

@Composable
fun TextFieldView() {var inputPhone by remember { mutableStateOf("") }TextField(value = inputPhone,onValueChange = {inputPhone = it},textStyle = TextStyle(fontSize = 16.sp, color = Color.Blue),colors = TextFieldDefaults.colors(focusedIndicatorColor = Color.Transparent,disabledIndicatorColor = Color.Transparent,unfocusedIndicatorColor = Color.Transparent,focusedContainerColor = Color.Green,disabledContainerColor = Color.Green,unfocusedContainerColor = Color.Green,),singleLine = true,keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Phone),placeholder = {Text(text = "请输入手机号",color = Color.Red,)})
}

在这里插入图片描述

8、限制输入手机号

TextField没有直接限制输入的属性,通过onValueChange来限制输入的内容和位数,以下以现在输入11位的手机号为例:

@Composable
fun TextFieldView() {var inputPhone by remember { mutableStateOf("") }TextField(value = inputPhone,onValueChange = {val numberRegex = "^[0-9]\\d*$".toRegex()if ((it.isEmpty() || it.matches(numberRegex)) && it.length <= 11) {inputPhone = it}},textStyle = TextStyle(fontSize = 16.sp, color = Color.Blue),colors = TextFieldDefaults.colors(focusedIndicatorColor = Color.Transparent,disabledIndicatorColor = Color.Transparent,unfocusedIndicatorColor = Color.Transparent,focusedContainerColor = Color.Green,disabledContainerColor = Color.Green,unfocusedContainerColor = Color.Green,),singleLine = true,keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Phone),placeholder = {Text(text = "请输入手机号",color = Color.Red,)})
}

在这里插入图片描述

9、添加输入框后的图标

通过trailingIcon属性添加输入框后的图标,点击可以清空输入框内容

@Composable
fun TextFieldView() {var inputPhone by remember { mutableStateOf("") }TextField(value = inputPhone,onValueChange = {val numberRegex = "^[0-9]\\d*$".toRegex()if ((it.isEmpty() || it.matches(numberRegex)) && it.length <= 11) {inputPhone = it}},textStyle = TextStyle(fontSize = 16.sp, color = Color.Blue),colors = TextFieldDefaults.colors(focusedIndicatorColor = Color.Transparent,disabledIndicatorColor = Color.Transparent,unfocusedIndicatorColor = Color.Transparent,focusedContainerColor = Color.Green,disabledContainerColor = Color.Green,unfocusedContainerColor = Color.Green,),singleLine = true,keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Phone),trailingIcon = {if (inputPhone.isNotEmpty()) {Image(painterResource(id = R.drawable.ic_input_clear),contentDescription = "输入框后面的图标",Modifier.size(14.dp).clickable {inputPhone = ""})}},placeholder = {Text(text = "请输入手机号",color = Color.Red,)})
}

在这里插入图片描述

10、隐藏输入内容

通过visualTransformation属性,可以隐藏输入内容

@Composable
fun TextFieldView() {var inputPhone by remember { mutableStateOf("") }TextField(value = inputPhone,onValueChange = {val numberRegex = "^[0-9]\\d*$".toRegex()if ((it.isEmpty() || it.matches(numberRegex)) && it.length <= 11) {inputPhone = it}},textStyle = TextStyle(fontSize = 16.sp, color = Color.Blue),colors = TextFieldDefaults.colors(focusedIndicatorColor = Color.Transparent,disabledIndicatorColor = Color.Transparent,unfocusedIndicatorColor = Color.Transparent,focusedContainerColor = Color.Green,disabledContainerColor = Color.Green,unfocusedContainerColor = Color.Green,),singleLine = true,keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Phone),visualTransformation = PasswordVisualTransformation(),trailingIcon = {if (inputPhone.isNotEmpty()) {Image(painterResource(id = R.drawable.ic_input_clear),contentDescription = "输入框后面的图标",Modifier.size(14.dp).clickable {inputPhone = ""})}},placeholder = {Text(text = "请输入手机号",color = Color.Red,)})
}

在这里插入图片描述

三、TextField完整属性

@OptIn(ExperimentalMaterial3Api::class)
@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() //输入框颜色组
) 

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

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

相关文章

youlai-boot项目的学习—本地数据库安装与配置

数据库脚本 在项目代码的路径下&#xff0c;有两个版本的mysql数据库脚本&#xff0c;使用对应的脚本就安装对应的数据库版本&#xff0c;本文件选择了5 数据库安装 这里在iterm2下使用homebrew安装mysql5 brew install mysql5.7注&#xff1a;记得配置端终下的科学上网&a…

实时工业数据采集分析系统高效处理产线信息!

对于大部分制造业企业&#xff0c;测量仪器的自动数据采集一直是个令人烦恼的事情&#xff0c;即使仪器已经具有RS232/485等接口&#xff0c;但仍然在使用一边测量&#xff0c;一边手工记录到纸张&#xff0c;再输入到PC中处理的方式&#xff0c;不但工作繁重&#xff0c;同时也…

try catch return语句情况分析

try catch return语句情况分析 try catch无finally语句写在最后 try catch try catch语法是一种对应于异常处理的语句&#xff0c;其中try语句内用于编写有异常存在可能的语句&#xff0c;而catch语句内用于编写捕获到异常的类型以及对异常对象的处理方法&#xff0c;本文主要…

鸿蒙: 基础认证

先贴鸿蒙认证 官网10个类别总结如下 https://developer.huawei.com/consumer/cn/training/dev-cert-detail/101666948302721398 10节课学习完考试 考试 90分合格 3次机会 1个小时 不能切屏 运行hello world hvigorfile.ts是工程级编译构建任务脚本 build-profile.json5是工程…

IPA清洁棉签 IPA清洁擦拭棒:打印机头、电子设备等清洁的有力工具!

在数字化快速发展的今天&#xff0c;打印机头、电子设备等已经成为了我们日常生活和工作中不可或缺的一部分。然而&#xff0c;随着使用时间的增长&#xff0c;这些设备往往会因为灰尘、油渍等污染物的积累而影响其性能。此时&#xff0c;一款高效、便捷的清洁工具就显得尤为重…

数据预处理之基于聚类的TOD异常值检测#matlab

1.基于聚类的异常值检测方法 物以类聚——相似的对象聚合在一起&#xff0c;基于聚类的异常点检测方法有两个共同特点&#xff1a; (1)先采用特殊的聚类算法处理输入数据而得到聚类&#xff0c;再在聚类的基础上来检测异常。 (2)只需要扫描数据集若干次&#xff0c;效率较高…

3D Gaussian Splatting Windows安装

1.下载源码 git clone https://github.com/graphdeco-inria/gaussian-splatting --recursive 2.安装cuda NVIDIA GPU Computing Toolkit CUDA Toolkit Archive | NVIDIA Developer 3.安装COLMAP https://github.com/colmap/colmap/releases/tag/3.9.1 下载完成需要添加环…

基于Springboot框架班级综合测评管理系统的设计与实现

开头语&#xff1a;你好呀&#xff0c;我是计算机学姐码农小野&#xff01;如果有相关需求&#xff0c;可以私信联系我。 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;Springboot框架&#xff0c;B/S模式 工具&#xff1a;MyEclipse 系统展示 首页…

Go 并发控制:RWMutex 实战指南

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

《地下城与勇士》新手攻略,开荒必备!云手机多开教程!

《地下城与勇士》&#xff08;DNF&#xff09;是一款广受欢迎的多人在线动作角色扮演游戏。玩家将在游戏中扮演不同职业的角色&#xff0c;通过打怪、做任务、PK等方式不断提升自己&#xff0c;探索广阔的阿拉德大陆。游戏中设有丰富的副本、装备、技能系统&#xff0c;玩家可以…

重磅!草料模板库更新,新增签到报名和旅游模板

本次共更新5个签到报名场景模板&#xff0c;以及6个旅游场景模板。 所有模板内容均可自定义修改&#xff0c;并可免费使用。 签到报名场景 签到报名场景更新了 活动报名、大型活动会议报名、展会邀请函、专题讲座活动报名和技能培训邀约报名 5个模板&#xff0c;基于不同的会…

6.13.1 使用残差神经网络堆叠集成进行乳腺肿块分类和诊断的综合框架

计算机辅助诊断 (CAD) 系统需要将肿瘤检测、分割和分类的自动化阶段按顺序集成到一个框架中&#xff0c;以协助放射科医生做出最终诊断决定。 介绍了使用堆叠的残差神经网络 (ResNet) 模型&#xff08;即 ResNet50V2、ResNet101V2 和 ResNet152V2&#xff09;进行乳腺肿块分类…

基于自编码器的心电图信号异常检测(Python)

使用的数据集来自PTB心电图数据库&#xff0c;包括14552个心电图记录&#xff0c;包括两类&#xff1a;正常心跳和异常心跳&#xff0c;采样频率为125Hz。 import numpy as np np.set_printoptions(suppressTrue) import pandas as pd import matplotlib.pyplot as plt import…

reverse-android-淘最热点so

资源 1. com.maihan.tredian 2021版 淘最热点 2. 该 app 没有加壳 ,也没混淆。 登录抓包 POST: https://api.taozuiredian.com/api/v1/auth/login/sms POST /api/v1/auth/login/sms HTTP/1.1 Content-Type: application/json Connection: close Charset: UTF-8 User-Agen…

RabbitMQ实践——在Ubuntu上安装并启用管理后台

大纲 环境安装启动管理后台 RabbitMQ是一款功能强大、灵活可靠的消息代理软件&#xff0c;为分布式系统中的通信问题提供了优秀的解决方案。无论是在大规模数据处理、实时分析还是微服务架构中&#xff0c;RabbitMQ都能发挥出色的性能&#xff0c;帮助开发者构建高效、稳定的系…

夏季河湖防溺水新举措:EasyCVR+AI视频智能监控系统保障水域安全

近日一则新闻引起大众关注&#xff0c;有网友发布视频称&#xff0c;假期在逛西湖时&#xff0c;发现水面上“平躺”漂浮着一名游客在等待救援。在事发3分钟内&#xff0c;沿湖救生员成功将落水游客救到了岸边。 随着夏季的到来&#xff0c;雨水增多&#xff0c;各危险水域水位…

Windows添加用户

以管理员身份进入CMD命令中心&#xff0c;执行以下命令&#xff1a; // net user 用户名 密码 /add net user admin 123456 /add 执行完成会已添加该用户名&#xff0c;可在系统设置中查看更改

免费插件集-illustrator插件-Ai插件-批量加边框

文章目录 1.介绍2.安装3.通过窗口>扩展>知了插件4.功能解释5.总结 1.介绍 本文介绍一款免费插件&#xff0c;加强illustrator使用人员工作效率&#xff0c;进行批量加边框处理。首先从下载网址下载这款插件 https://download.csdn.net/download/m0_67316550/87890501&am…

vscode字符多行自动增长插件。

多行字符自动增长插件CharAutoIncre 当你使用shiftalt选中了多行,并输入了’1’,这时这几行都变成了’1’. 这时你可以选中&#xff08;shift左键&#xff09;为’1’的这几行, 接下来按下shiftaltq此时’1’变为了’12345’自增长的样式。 同时本插件支持字符’a-z,A-Z’。 目…

离散数学-代数系统证明题归类

什么是独异点&#xff1f; 运算 在B上封闭&#xff0c;运算 可结合&#xff0c;且存在幺元。 学会合理套用题目公式结合律 零元&#xff1f; 群中不可能有零元 几个结论要熟记&#xff1a; 1.当群的阶为1时&#xff0c;它的唯一元素视作幺元e 2.若群的阶大于1时&#xff0c;…