Android开发系列(三)Jetpack Compose 之TextField

embedded/2025/2/14 8:31:10/

   TextField 是一个用于接收用户输入的UI组件。它是Jetpack Compose中的一部分,可以方便地实现用户文本输入的功能。

    TextField 允许用户输入一个或多个文本行,可以用于接收用户的文本输入、搜索等操作。它提供了一些常用的功能,如输入验证、键盘类型设置、输入提示等。

    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,prefix: @Composable (() -> Unit)? = null,suffix: @Composable (() -> Unit)? = null,supportingText: @Composable (() -> Unit)? = null,isError: Boolean = false,visualTransformation: VisualTransformation = VisualTransformation.None,keyboardOptions: KeyboardOptions = KeyboardOptions.Default,keyboardActions: KeyboardActions = KeyboardActions.Default,singleLine: Boolean = false,maxLines: Int = if (singleLine) 1 else Int.MAX_VALUE,minLines: Int = 1,interactionSource: MutableInteractionSource = remember { MutableInteractionSource() },shape: Shape = TextFieldDefaults.shape,colors: TextFieldColors = TextFieldDefaults.colors()
) 

下面通过示例说明该函数的使用方法

一、简单输入框

    一个简单的输入框实现如下。

    由于TextField时一个函数,无法通过输入获取输入框的内容,这里需要声明一个状态变量text,该变量用于保存输入框的内容,也是输入框要显示的内容。

    在TextField方法中,value是输入框要显示的内容;onValueChange是内容变换后的回调,这里只是把变化后的内容保存到text变量中;label是标签,用于提示该输入框的作用。

    当输入完成后,变量text保存的正是输入框的内容,从该变量取值即可。

二、带边框的输入框

    使用OutlinedTextField可实现带边框的输入框,示例如下。

    OutlinedTextFieldTextField的用法基本一致,label的显示样式不一样,OutlinedTextField的label显示在边框上。

三、输入框的样式

    通过textStyle可以改变输入框的样式,示例如下

    textStyle可以修改输入框文字的颜色、粗细等。

    也可以实现渐变色的输入框,示例如下。

    通过Brush可以定义渐变色,然后赋值给TextStyle的参数brush即可实现渐变色的输入框。

四、键盘选项

   1)自动调整大小写布局

    当某个输入框拉起输入法,通过keyboardOptions可以输入法的键盘属性,示例如下。

   KeyboardOptions的capitalization用于指定键盘的大小写布局,当值为Words时,表示当输入每个单词的第一个字母时,键盘都变成大写布局。当值为Characters时,表示每个字母都大小,当值为Sentences时,表示句子的第一个字母才大小。

   2)自定义Enter键

     KeyboardOptions的imeAction可以自定义Enter键图标,如下所示。

     这里定义为Search,输入法显示的是一个查询的图标。

 3)自定义输入法的类型

     KeyboardOptions的keyboardType可以定义输入法类型。

     这里把Number数值给keyboardType,表示只输入数字,因此输入法只显示数据按键。

    在该示例中还有其它参数,这里简单介绍一些。

   placeholder:占位符,当输入框没有内容会显示占位符。

   leadingIcon: 头部图标。

   trailingIcon:尾部图标。

   keyboardActions:当用户按Enter后收到回调onDone


http://www.ppmy.cn/embedded/50420.html

相关文章

三星SAINT-D技术引领HBM内存堆叠革命

三星电子即将在今年推出一项革命性技术,允许在CPU或GPU上堆叠高带宽内存(HBM),根据韩国经济日报的报道,这一消息在圣何塞举办的三星晶圆代工论坛2024上公布,并得到业内消息人士证实。这项3D封装技术为2025年…

保姆级小白就业人工智能(视频+源码+笔记)

🍅我是小宋, Java学习AI,记录学习之旅。关注我,带你轻松过面试。提升简历亮点(14个demo) 🍅我的java面试合集已有12W 浏览量。🌏号:tutou123com。拉你进专属群。 ⭐⭐你的…

前端面试题——网络篇

文章目录 前言IPv4和IPv6的区别OSI 模型模型分层功能TCP/IP 分层协议 三次握手与四次挥手三次握手简言 四次挥手简言 总结 前言 准备了一些网络部分高频面试题,有需要的小伙伴可以收藏,需要的时候看看,也会持续更新。 IPv4和IPv6的区别 1.地…

SpringCloud总结(springcloud alibaba)

目录 版本说明(很重要) springcloud alibaba对应组件版本说明 简述 spring cloud albaba 几大模块 周会讨论 - spring cloud alibaba每周都会有周会讨论,社区活跃 spring cloud alibaba官网 注册配置中心 简单介绍 nacos 步骤 示例代码 依赖…

qt使用信号槽时,一直提示无法解析的外部符号

今天写了个信号槽时,粗心大意在发信号的类的头文件中忘记加上Q_OBJECT,导致一直出现无法解析的外部符号, 信号没有在类声明中使用 Q_OBJECT 宏。这个宏是必需的,因为它告诉 Qt 的元对象编译器(moc)需要处理…

这些数据可被Modbus采集,你还不知道???

为什么要用Modbus采集模块 Modbus采集模块之所以被广泛使用,是因为它提供了标准化的通信协议,确保了不同设备间的兼容性。它支持多种通信方式,易于实现,并且能够适应不同的网络环境。Modbus模块能够收集和传输各种工业数据&#x…

MyBatis使用Demo

文章目录 01、Mybatis 意义02、Mybatis 快速入门04、Mapper 代理开发05、Mybatis 配置文件07、查询所有&结果映射08、查询-查看详情09、查询-条件查询10、查询-动态条件查询多条件动态查询单条件动态查询 11、添加&修改功能添加功能修改功能 12、删除功能删除一个批量删…

自动驾驶基础一车辆模型

模型概述: 自行车动力学模型通常用于研究自行车在骑行过程中的行为,如稳定性、操控性和速度等。模型可以基于不同的简化假设和复杂度,从简单的二维模型到复杂的三维模型,甚至包括骑行者的动态。力学方程: 基础物理学方…