gpt4 book ai didi

android - Jetpack Compose 如何删除 EditText/TextField 下划线并保持光标?

转载 作者:行者123 更新时间:2023-12-03 21:44:00 75 4
gpt4 key购买 nike

嗨,我需要删除 TextField 中的下划线,因为当 TextField 是圆形时它看起来很难看。我已将 activeColor 设置为透明,但光标不会显示(因为它是透明的)。如何删除下划线/activeColor 并保留光标?
enter image description here
这是我的圆形文本字段代码:

@Composable
fun SearchBar(value: String) {
// we are creating a variable for
// getting a value of our text field.
val inputvalue = remember { mutableStateOf(TextFieldValue()) }

TextField(
// below line is used to get
// value of text field,
value = inputvalue.value,

// below line is used to get value in text field
// on value change in text field.
onValueChange = { inputvalue.value = it },

// below line is used to add placeholder
// for our text field.
placeholder = { Text(text = "Firmanavn") },

// modifier is use to add padding
// to our text field, and a circular border
modifier = Modifier.padding(all = 16.dp).fillMaxWidth().border(1.dp, Color.LightGray, CircleShape),

shape = CircleShape,


// keyboard options is used to modify
// the keyboard for text field.
keyboardOptions = KeyboardOptions(
// below line is use for capitalization
// inside our text field.
capitalization = KeyboardCapitalization.None,

// below line is to enable auto
// correct in our keyboard.
autoCorrect = true,

// below line is used to specify our
// type of keyboard such as text, number, phone.
keyboardType = KeyboardType.Text,
),

// below line is use to specify
// styling for our text field value.
textStyle = TextStyle(color = Color.Black,
// below line is used to add font
// size for our text field
fontSize = TextUnit.Companion.Sp(value = 15),

// below line is use to change font family.
fontFamily = FontFamily.SansSerif),

// below line is use to give
// max lines for our text field.
maxLines = 1,

// active color is use to change
// color when text field is focused.
activeColor = Color.Gray,

// single line boolean is use to avoid
// textfield entering in multiple lines.
singleLine = true,

// inactive color is use to change
// color when text field is not focused.
inactiveColor = Color.Transparent,

backgroundColor = colorResource(id = R.color.white_light),

// trailing icons is use to add
// icon to the end of tet field.
trailingIcon = {
Icon(Icons.Filled.Search, tint = colorResource(id = R.color.purple_700))
},
)

最佳答案

您可以定义这些属性以应用透明颜色:

  • focusedIndicatorColor
  • unfocusedIndicatorColor
  • disabledIndicatorColor

  • 就像是:
       TextField(
    //..
    colors = TextFieldDefaults.textFieldColors(
    textColor = Color.Gray,
    disabledTextColor = Color.Transparent,
    backgroundColor = Color.White,
    focusedIndicatorColor = Color.Transparent,
    unfocusedIndicatorColor = Color.Transparent,
    disabledIndicatorColor = Color.Transparent
    )
    )
    enter image description here

    开始1.2.0 您也可以使用新的 OutlinedTextFieldDecorationBox连同 BasicTextField自定义边框或指示线。
        val interactionSource = remember { MutableInteractionSource() }
    val enabled = true
    val singleLine = true
    val colors = TextFieldDefaults.outlinedTextFieldColors()

    BasicTextField(
    value = value,
    onValueChange = onValueChange,
    modifier = modifier,
    // internal implementation of the BasicTextField will dispatch focus events
    interactionSource = interactionSource,
    enabled = enabled,
    singleLine = singleLine
    ) {
    TextFieldDefaults.OutlinedTextFieldDecorationBox(
    value = value,
    visualTransformation = VisualTransformation.None,
    innerTextField = it,
    // same interaction source as the one passed to BasicTextField to read focus state
    // for text field styling
    interactionSource = interactionSource,
    enabled = enabled,
    singleLine = singleLine,
    // update border thickness and shape
    border = {
    TextFieldDefaults.BorderBox(
    enabled = enabled,
    isError = false,
    colors = colors,
    interactionSource = interactionSource,
    shape = CircleShape,
    unfocusedBorderThickness = 1.dp,
    focusedBorderThickness = 1.dp
    )
    }
    )
    }
    enter image description here
    您也可以使用 TextFieldDecorationBox应用 indicatorLine指定 focusedIndicatorLineThickness 的修饰符和 unfocusedIndicatorLineThickness值(value)观:
       val colors = TextFieldDefaults.textFieldColors(
    backgroundColor = White,
    focusedIndicatorColor = Gray)

    BasicTextField(
    modifier = Modifier
    .border(1.dp, Color.LightGray, CircleShape)
    .indicatorLine(
    enabled = enabled,
    isError = false,
    colors = colors,
    interactionSource = interactionSource,
    focusedIndicatorLineThickness = 0.dp,
    unfocusedIndicatorLineThickness = 0.dp
    )
    .background(colors.backgroundColor(enabled).value, CircleShape),
    ) {
    TextFieldDecorationBox(
    //...
    colors = colors
    )
    }

    关于android - Jetpack Compose 如何删除 EditText/TextField 下划线并保持光标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65780722/

    75 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com