唯客微博客

专注于计算机,嵌入式领域的技术

0%

Jetpack Compose组件-文本域(TextField)

Jetpack Compose组件-文本域(TextField)

基础文本域(BasicTextField)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
@Composable
fun BasicTextField(
// 文本域的值
value: TextFieldValue,
// 文本改变回调
onValueChange: (TextFieldValue) -> Unit,
// 修饰符
modifier: Modifier = Modifier,
// 组件使能启用
enabled: Boolean = true,
// 组件只读
readOnly: Boolean = false,
// 文本样式
textStyle: TextStyle = TextStyle.Default,
// 键盘类型,如数字键盘
keyboardOptions: KeyboardOptions = KeyboardOptions.Default,
// 功能键事件监听
keyboardActions: KeyboardActions = KeyboardActions.Default,
// 单行文本
singleLine: Boolean = false,
// 最大行数
maxLines: Int = if (singleLine) 1 else Int.MAX_VALUE,
// 最小行数,1.4新增
minLines: Int = 1,
// 虚拟转换,比如使用PasswordVisualTransformation将输入字符转换为密码•••••
visualTransformation: VisualTransformation = VisualTransformation.None,
// 计算新文本布局时执行的回调
onTextLayout: (TextLayoutResult) -> Unit = {},
// 状态源
interactionSource: MutableInteractionSource = remember { MutableInteractionSource() },
// 光标画刷
cursorBrush: Brush = SolidColor(Color.Black),
// 文本域的装饰
decorationBox: @Composable (@Composable innerTextField: () -> Unit) -> Unit = @Composable { innerTextField -> innerTextField() }
): Unit

@Composable
fun BasicTextField(
// 文本域的值
value: String,
// 其他参数同上 ...................
): Unit

decorationBox示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var value by rememberSaveable { mutableStateOf("initial value") }
BasicTextField(
value = value,
onValueChange = { value = it },
decorationBox = { innerTextField ->
Row(
Modifier
.background(Color.LightGray, RoundedCornerShape(percent = 30))
.padding(16.dp)
) {
Icon(Icons.Default.MailOutline, contentDescription = null)
Spacer(Modifier.width(16.dp))
innerTextField()
}
}
)

文本域(TextField)

TextField是基于BasicTextField遵循 Material Design 准则的文本域。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
@Composable
fun TextField(
// 文本域的值
value: TextFieldValue,
// 文本改变回调
onValueChange: (TextFieldValue) -> 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,
// 如果为true,默认情况下标签、底部指示器和尾随图标将以错误颜色显示
isError: Boolean = false,
// 虚拟转换,比如使用PasswordVisualTransformation将输入字符转换为密码•••••
visualTransformation: VisualTransformation = VisualTransformation.None,
// 键盘类型,如数字键盘
keyboardOptions: KeyboardOptions = KeyboardOptions.Default,
// 功能键事件监听
keyboardActions: KeyboardActions = KeyboardActions(),
// 单行文本
singleLine: Boolean = false,
// 最大行数
maxLines: Int = if (singleLine) 1 else Int.MAX_VALUE,
// 最小行数,1.4新增
minLines: Int = 1,
// 状态源
interactionSource: MutableInteractionSource = remember { MutableInteractionSource() },
// 文本域的形状
shape: Shape = TextFieldDefaults.TextFieldShape,
// 文本域的各种颜色
colors: TextFieldColors = TextFieldDefaults.textFieldColors()
): Unit

@Composable
fun TextField(
// 文本域的值
value: String,
// 其他参数同上 ...................
): Unit

轮廓线文本域(OutlinedTextField)

OutlinedTextField是有轮廓线的文本域。

1
2
3
4
@Composable
fun OutlinedTextField(
// 参数与TextField一致,仅默认值不一样
): Unit
-------------本文结束感谢您的阅读-------------

本文标题:Jetpack Compose组件-文本域(TextField)

文章作者:Vinx

发布时间:2023年01月11日 - 10:32

最后更新:2023年09月18日 - 11:39

原始链接:https://blog.vinkvin.com/post/55/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。