标签: android-compose-textfield

如何创建一个带有下划线、没有任何背景或边框的文本字段?

我正在尝试在 Jetpack 中创建一个带有下划线但没有任何其他边框或背景的 TextField。我该怎么做呢?

这是我当前使用的代码:

val query = remember {mutableStateOf("")}
        TextField(
        value = query.value,
            onValueChange = { newValue -> query.value = newValue },
            label={Text("Dummy", color = colorResource(id = R.color.fade_green))},
            textStyle = TextStyle(
                textAlign = TextAlign.Start,
                color = colorResource(id = R.color.fade_green),
                fontFamily = FontFamily(Font(R.font.poppins_regular)),
                fontSize = 14.sp,
            ),
            modifier = Modifier
                .padding(start = 30.dp).border(0.dp, Color.Red),
            colors = TextFieldDefaults.textFieldColors(
                backgroundColor = Color.Transparent
            )
            )
Run Code Online (Sandbox Code Playgroud)

android android-jetpack-compose android-compose-textfield

5
推荐指数
1
解决办法
1251
查看次数

Jetpack Compose 将光标设置在文本字段末尾

想为电话号码创建文本字段。需要帮助将字段中的光标设置为始终位于字符串末尾

我想要做什么:当在字段中获得新数字时,我获取已输入的所有数字,然后附加下划线(_)以获得至少11个字符串长度,然后通过子字符串返回带有数字或“_”的字符串:

return "+7(${template.substring(1, 4)}) ${template.substring(4,7)} ${template.substring(7,9)} ${template.substring(9, 11)}" 如果光标始终位于末尾,则它可以工作,但如果不是,则数字顺序被破坏

完整代码:

@Composeble

@Composable
fun PhoneNumberEditText(
    phoneNumState: MutableState<String>,
    modifier: Modifier = Modifier,
    imeAction: ImeAction = ImeAction.Done,
    onImeAction: () -> Unit = {}
) {
    TextField(
        shape = RoundedCornerShape(16.dp),
        value = phoneNumState.value,
        onValueChange = { value ->
            phoneNumState.value = value
            val digits = phoneNumState.value.toCharArray().filter { it.isDigit() }
            phoneNumState.value = phoneNumTemplate(digits)
        },
        modifier = modifier
            .clip(RoundedCornerShape(16.dp))
            .size(343.dp, 54.dp),
        singleLine = true,
        placeholder = {
            Text(
                "+7(___)_______", style = passwordTextStyle,
            )
        },
        colors = …
Run Code Online (Sandbox Code Playgroud)

android phone-number textfield android-jetpack-compose android-compose-textfield

5
推荐指数
1
解决办法
3588
查看次数

如何使用 jetpack compose 在图像上叠加文本

我正在尝试制作一些使用与下图相同概念的东西;

在此输入图像描述

类似背景的图像,上面有文字。

我尝试制作一张卡片并为其指定图像的背景颜色,但出现错误;

在此输入图像描述

我想要做的是在图像上覆盖一些文本,如上图所示。

那么请问我该如何安排这段代码。我需要将所有内容都放在一个可组合项中,因为我需要填充它。

提前感谢您的理解和帮助。

请,我很乐意提供所需的更多信息。

android android-jetpack android-jetpack-compose android-compose-textfield

5
推荐指数
1
解决办法
6741
查看次数

如何在 Jetpack Compose 中将行的宽度设置为等于 TextField 的宽度?

我希望包含按钮和文本的行的宽度与文本字段的宽度相同。这是我尝试过的:

Column(
    modifier = Modifier.fillMaxSize().padding(padding),
    verticalArrangement = Arrangement.Center,
    horizontalAlignment = Alignment.CenterHorizontally
) {
    TextField(
        value = email,
        onValueChange = { email = it },
        placeholder = {Text(text = "Email")}
    )
    TextField(
        value = password,
        onValueChange = { password = it },
        placeholder = {Text(text = "Pass")}
    )
    Row {
        Button(
            onClick = {
                start(email, password)
            }
        ) {
            Text(
                text = "Start",
                fontSize = 18.sp
            )
        }
        Spacer(
            modifier = Modifier.weight(1f)
        )
        Text(
            text = "Skip"
        )
    }
}
Run Code Online (Sandbox Code Playgroud)

这就是我得到的: …

android kotlin android-jetpack-compose android-compose-textfield

5
推荐指数
1
解决办法
954
查看次数

如何将android compose材质图标传递给textField

我想使用材质图标作为参数将其传递给文本字段。

@Composable
fun NormalTextField(
    icon: () -> Unit,  // how to pass material icon to textField
    label: String
) {
    val (text, setText) = mutableStateOf("")
    TextField(
        leadingIcon = icon,
        value = text,
        onValueChange = setText,
        label = label
    )
}
Run Code Online (Sandbox Code Playgroud)

android google-material-icons android-compose-textfield

4
推荐指数
1
解决办法
8305
查看次数


使用decorationBox调整Compose中的TextField标签填充

我正在尝试调整可组合项中标签的开始填充TextSearchBar

我知道一种选择是使用BasicTextField可组合项,但我想避免这种情况并通过添加来使用contentPadding参数(jeran 在下面的帖子中提到)。decorationBoxandroidx.compose.material:material:1.2.0-alpha04

我在添加decorationBox 时遇到困难(不太熟悉lambda 参数函数的工作原理)。请帮助我如何实现decorationBox来调整标签文本的开始填充?

删除 jetpack compose textfield 上的默认填充

@Composable
fun TextSearchBar(
    modifier: Modifier = Modifier,
    value: String,
    label: String,
    onDoneActionClick: () -> Unit = {},
    onClearClick: () -> Unit = {},
    onFocusChanged: (FocusState) -> Unit = {},
    onValueChanged: (String) -> Unit,
) {
    TextField(
        value = value,
        onValueChange = { query ->
            onValueChanged(query)
        },
        modifier = modifier
            .padding(horizontal = 4.dp, vertical = 0.dp)
            .fillMaxWidth()
            .onFocusChanged { onFocusChanged(it) }, …
Run Code Online (Sandbox Code Playgroud)

android android-jetpack-compose android-compose-textfield

4
推荐指数
1
解决办法
4317
查看次数

如何在 Jetpack compose 中隐藏 TextField/BasicTextField 的 TextFieldCursorHandle?

到目前为止我的解决方案是使用Transparent光标的颜色。
我正在寻找更好的方法来隐藏它(如果有的话)。

cursorBrush = SolidColor(Transparent)
Run Code Online (Sandbox Code Playgroud)

TextField 应该获得焦点,键盘应该打开并且用户应该能够键入输入。

截屏

问题是TextFieldCursorHandle输入文本后我仍然可以看到。

在此输入图像描述

android android-jetpack-compose android-compose-textfield

4
推荐指数
1
解决办法
2066
查看次数

如何正确从资源中获取Color(JetpackCompose)?

我需要使用资源来支持不同的颜色BuildVars,所以我有Color.kt定义颜色的文件,问题是如果我从colors.xml这样的资源中获取颜色

val MyWhiteColor: Color = Color(R.color.my_white_color)
Run Code Online (Sandbox Code Playgroud)

并像这样使用它

    Text(
        text = ...,
        style = TextStyle(
            color = MyWhiteColor
        )
    )
Run Code Online (Sandbox Code Playgroud)

但是,如果我将实现更改为,我会得到蓝色而不是白色

val MyWhiteColor: Color = Color(android.graphics.Color.parseColor("#FFFFFF"))
Run Code Online (Sandbox Code Playgroud)

它按预期工作,我得到白色。

我缺少什么?colors.xml为什么当我从颜色中获取值时会转换为蓝色?

android-jetpack android-jetpack-compose android-compose-textfield

4
推荐指数
1
解决办法
3691
查看次数

如何在 Jetpack Compose 中使用 AnnotatedString 设置 LineHeight

我现在正在使用 AnnotedStrings 创建具有两种不同文本样式的文本: 图像上的标签显示 1.26 千瓦文本

我正在使用 SpanStyle 设置此标签。如何以这种方式设置行高?因为SpanStyle缺少这个属性。

android android-jetpack-compose android-compose-textfield

4
推荐指数
1
解决办法
1479
查看次数