Я использую Jetpack Compose с материалом Material3. Мой экран выглядит так. Я хочу, чтобы текстовое поле имело прозрачный фон вместо белого. Я опробовал приведенный ниже код (см. строку background(..
, но он не работает. Что мне здесь не хватает?
TextField(
value = userNameValue.value,
onValueChange = { userNameValue.value = it },
modifier = Modifier
.fillMaxWidth()
.background(
Color.Transparent
),
label = {
Text(
"Names" //stringResource(id = R.string.username_label)
)
}
}
TextField Composable предлагает параметр colors
. Оно принимает значение типа TextFieldColors, которое объединяет все виды цветов, содержащихся в TextField
.
В вашем случае попробуйте переопределить все цвета, содержащие слово «Контейнер», примерно так:
TextField(
value = userNameValue.value,
onValueChange = { userNameValue.value = it },
modifier = Modifier.fillMaxWidth(),
label = {
Text(
text = "Names" //stringResource(id = R.string.username_label)
),
},
colors = TextFieldDefaults.colors(
focusedContainerColor = Color.Transparent,
unfocusedContainerColor = Color.Transparent,
disabledContainerColor = Color.Transparent,
errorContainerColor = Color.Transparent
)
}
Вы можете добавить это в свой TextInputEditText.
android:backround = "@android:color/transparent"
Результаты (текстовое поле M3 с прозрачным фоном)
Но этот способ работает для меня всегда.
Невозможно, если вы используете Compose. Используете ли вы Compose?
TextInputEditText
не является частью Jetpack Compose.
Это не работает с Compose, поскольку нет XML-файлов для определения компонентов. Как показывает ответ @BenjyTec, все это делается в коде.