Compose TextField 属性 - chuwuwang/ReadingNote GitHub Wiki
fun TextField(
value: String, // 文字, 也可以传入TextFieldValue
onValueChange: (TextFieldValue) -> Unit, // 文字改变的回调
modifier: Modifier = Modifier, // 修饰符
enabled: Boolean = true, // 是否可用, 等价于Android中的enable属性
readOnly: Boolean = false, // 是否只读
textStyle: TextStyle = LocalTextStyle.current, // 文字格式, 可以传入SpanStyle和ParagraphStyle
label: @Composable (() -> Unit)? = null, // 标签, 跟Material中的label类似
placeholder: @Composable (() -> Unit)? = null, // 输入文本为空的占位符,有焦点才会展示
leadingIcon: @Composable (() -> Unit)? = null, // 头部图标
trailingIcon: @Composable (() -> Unit)? = null, // 尾部图标
isError: Boolean = false, // 指定当前输入文本是否出错, 如果为错, 则会把文字和线框显示为红色来提示
visualTransformation: VisualTransformation = VisualTransformation.None, // 可以简单的理解为EditText中的inputType
keyboardOptions: KeyboardOptions = KeyboardOptions.Default, // 定义软键盘上的返回键的功能, 可以定义为return/search等
keyboardActions: KeyboardActions = KeyboardActions(), // 按下软键盘上返回键的回调
singleLine: Boolean = false, // 是否单行显示
maxLines: Int = Int.MAX_VALUE, // 最大行数
interactionSource: MutableInteractionSource = remember { MutableInteractionSource() }, // 表示一个由组件发出的交互流
shape: Shape = MaterialTheme.shapes.small.copy(bottomEnd = ZeroCornerSize, bottomStart = ZeroCornerSize), // 定义此文本框的形状(不包含背景)
colors: TextFieldColors = TextFieldDefaults.textFieldColors() // 用来定义文字, 光标等的处于不同状态的颜色
)
fun BasicTextField(
value: String, // 文字,也可以传入TextFieldValue
onValueChange: (String) -> Unit, // 文字改变的回调
modifier: Modifier = Modifier, // 修饰符
enabled: Boolean = true, // 是否可用
readOnly: Boolean = false, // 是否只读
textStyle: TextStyle = TextStyle.Default, // 文字样式
keyboardOptions: KeyboardOptions = KeyboardOptions.Default, // 定义软键盘上的返回键的功能,可以定义为return/search等
keyboardActions: KeyboardActions = KeyboardActions.Default, // 按下软键盘上返回键的回调
singleLine: Boolean = false, // 是否是单行
maxLines: Int = Int.MAX_VALUE, // 最大行数
visualTransformation: VisualTransformation = VisualTransformation.None, // 可以简单的理解为EditText中的inputType
onTextLayout: (TextLayoutResult) -> Unit = {}, // 布局变化的回调
interactionSource: MutableInteractionSource = remember { MutableInteractionSource() }, // 表示一个由组件发出的交互流
cursorBrush: Brush = SolidColor(Color.Black), // 重点!!画刷
decorationBox: @Composable (innerTextField: @Composable () -> Unit) -> Unit = @Composable { innerTextField -> innerTextField() } // 用来定义装饰框,innerTextField这个参数就是用来绘制文字的
)
- 如果你想完全自定义文本框,可以使用BasicTextField
- 如果你想使用轮廓式文本框,使用OutlinedTextField
- 如果你想使用实心文本框,使用TextField即可
其中TextField和OutlinedTextField除了一个是实心,一个是空心,其他API都是一样的,而BasicTextField则完全是自定义的。