kotlin - Jetpack Compose 中的装饰框 BasicTextField

标签 kotlin android-jetpack-compose android-jetpack-compose-text

我使用 jetpack compose 创建一个 editText,我想显示一个类似于“android:hint”之前的提示,
所以我尝试使用decorationBox,但是在我创建它之后,没有显示输入并且日志可以显示我的输入内容。
这是我的代码,

val passState= remember { mutableStateOf(TextFieldValue("")) }
BasicTextField(
    decorationBox = {
        Text("password",color = loginGrayColor)
    },
    value = passState.value,
    onValueChange = { passState.value = it ; Log.d("password",it.text) },
    singleLine = true,
    maxLines = 1,
    textStyle = TextStyle(
        fontSize = 15.sp,
        color = loginInputTextColor
    ),
    modifier = Modifier
        .padding(start = 10.dp, top = 10.dp)
        .height(20.dp)
)

最佳答案

您必须添加 innerTextField decorationBox 提供.
就像是:

var value by remember { mutableStateOf(TextFieldValue("")) }
BasicTextField(
    value = value,
    onValueChange = { value = it },
    decorationBox = { innerTextField ->
        Row(
            Modifier
                .background(Color.LightGray, RoundedCornerShape(percent = 30))
                .padding(16.dp)
        ) {

            if (value.text.isEmpty()) {
                Text("Label")
            }
            innerTextField()  //<-- Add this
        }
    },
)

关于kotlin - Jetpack Compose 中的装饰框 BasicTextField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67018985/

相关文章:

android - 围绕 SharedPreference 对辅助类进行单元测试

Android Jetpack 撰写 : how to zoom a image in a "box"?

android - Jetpack Compose 如何将特定大小的文本组件的文本或内容与左下角或右下角对齐?

android - 是否存在与密码字段等效的 Jetpack Compose,用户可以看到密码?

kotlin - 可流动的concatMapSingle,无需预取即可忽略点击,直到处理完成

properties - 在 Kotlin 中访问属性委托(delegate)

android - 意外标记(使用 ';' 分隔同一行上的表达式)

android - 修改 Jetpack Compose 中 IconButton 的波纹颜色

android - kotlinCompilerVersion 已弃用

android - 如何在 Jetpack Compose 中显示 Emoji?