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则完全是自定义的。