jetpack compose – OutlinedTextField 的 errorBorderColor 无法正常工作

huangapple go评论164阅读模式
英文:

jetpack compose - OutlinedTextField errorBorderColor not working

问题

I'm trying to set errorBorderColor of OutlinedTextField to Red but it's not working. Here I give the colors;

  1. @Composable
  2. private fun dateTimePickerColors() = TextFieldDefaults.outlinedTextFieldColors(
  3. errorBorderColor = Color.Red,
  4. disabledTextColor = Color.Gray,
  5. disabledBorderColor = Color.Gray,
  6. unfocusedBorderColor = Color.Gray,
  7. focusedBorderColor = Color.Gray,
  8. containerColor = Color.White,
  9. )
  10. // it gets value from viewModel according to inputs
  11. val isInputError = viewModel.isError.collectAsState
  12. OutlinedTextField(
  13. //...
  14. enabled = false
  15. colors = dateTimePickerColors()
  16. isError = isInputError,
  17. )

Probably the other colors like disabledBorderColor etc. overriding the error color and in the error case, border shows as gray instead of Red;

so how can i make borderColor Red?

Edit:
When I try this;

  1. private fun dateTimePickerColors() = TextFieldDefaults.textFieldColors(
  2. errorIndicatorColor = Color.Red,
  3. containerColor = Color.White
  4. )

it changes container color instead of border color.

英文:

I'm trying to set errorBorderColor of OutlinedTextField to Red but it's not working. Here I give the colors;

  1. @Composable
  2. private fun dateTimePickerColors() = TextFieldDefaults.outlinedTextFieldColors(
  3. errorBorderColor = Color.Red,
  4. disabledTextColor = Color.Gray,
  5. disabledBorderColor = Color.Gray,
  6. unfocusedBorderColor = Color.Gray,
  7. focusedBorderColor = Color.Gray,
  8. containerColor = Color.White,
  9. )
  10. // it gets value from viewModel according to inputs
  11. val isInputError = viewModel.isError.collectAsState
  12. OutlinedTextField(
  13. //...
  14. enabled = false
  15. colors = dateTimePickerColors()
  16. isError = isInputError,
  17. )

Probably the other colors like disabledBorderColor etc. overriding the error color and in the error case, border shows as gray instead of Red;

jetpack compose – OutlinedTextField 的 errorBorderColor 无法正常工作

so how can i make bordorColor Red?

Edit:
When I try this;

  1. private fun dateTimePickerColors() = TextFieldDefaults.textFieldColors(
  2. errorIndicatorColor = Color.Red,
  3. containerColor = Color.White
  4. )

jetpack compose – OutlinedTextField 的 errorBorderColor 无法正常工作

it changes container color instead of border color.

答案1

得分: 1

代码中的问题是 enabled = false,你需要更改为 enabled = true。然后只有 errorBorderColor = Color.Red 才能正常工作。

如果这是有意的,那么你可以将 disabledBorderColor = Color.Gray 更改为 disabledBorderColor = Color.Red,它将起作用。

另外,你可以尝试使用 outlinedTextFieldColors。这对我有效。

  1. @Composable
  2. private fun dateTimePickerColors() = TextFieldDefaults.textFieldColors(
  3. errorIndicatorColor = Color.Red,
  4. ....
  5. )
英文:

The problem in your code is enabled = false you have to change to enabaled = true. Then only errorBorderColor = Color.Red will work.

If it is intentional then you can change your disabledBorderColor = Color.Gray to disabledBorderColor = Color.Red, it will work.

Also you can try with outlinedTextFieldColors. It works for me.

  1. @Composable
  2. private fun dateTimePickerColors() = TextFieldDefaults.textFieldColors(
  3. errorIndicatorColor = Color.Red,
  4. ....
  5. )

答案2

得分: 1

使用enabled = false时,不会使用errorBorderColor

你必须使用**disabledBorderColor**并设置条件:

  1. val dateTimePickerColors = TextFieldDefaults.outlinedTextFieldColors(
  2. disabledTextColor = Color.Gray,
  3. disabledBorderColor = if (isInputError) Color.Red else Color.Gray,
  4. containerColor = Color.White,
  5. )
  6. OutlinedTextField(
  7. value = text,
  8. onValueChange = {text = it},
  9. enabled = false,
  10. colors = dateTimePickerColors,
  11. isError = isInputError,
  12. )

jetpack compose – OutlinedTextField 的 errorBorderColor 无法正常工作.
jetpack compose – OutlinedTextField 的 errorBorderColor 无法正常工作

英文:

Using enabled = false the errorBorderColor is not used.

You have to use disabledBorderColor using a condition:

  1. val dateTimePickerColors = TextFieldDefaults.outlinedTextFieldColors(
  2. disabledTextColor = Color.Gray,
  3. disabledBorderColor = if (isInputError) Color.Red else Color.Gray,
  4. containerColor = Color.White,
  5. )
  6. OutlinedTextField(
  7. value = text,
  8. onValueChange = {text = it},
  9. enabled = false,
  10. colors = dateTimePickerColors,
  11. isError = isInputError,
  12. )

jetpack compose – OutlinedTextField 的 errorBorderColor 无法正常工作.
jetpack compose – OutlinedTextField 的 errorBorderColor 无法正常工作

huangapple
  • 本文由 发表于 2023年3月9日 19:11:07
  • 转载请务必保留本文链接:https://go.coder-hub.com/75683802.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定