我一直在尝试使用新的 compose SearchBar 可组合项。除了我无法更改搜索输入文本字段的颜色之外,一切都很顺利。
这是我的代码:
SearchBar(
...
colors = SearchBarDefaults.colors(
inputFieldColors = TextFieldDefaults.colors(
unfocusedContainerColor = Color.Red,
focusedContainerColor = Color.Red,
focusedIndicatorColor = Color.Red,
unfocusedIndicatorColor = Color.Red,
disabledIndicatorColor = Color.Red,
)
), tonalElevation = 0.dp
我已将其设置为红色以查看一切是否正常。 正如您在图片中看到的那样,根本没有红色。 tonalElevation 故意设为 0.dp。 基本上我希望文本字段有较暗的背景
我刚刚从
inputFieldColors
可组合项的源代码中读到了这个。
创建一个TextFieldColors,表示不同状态下搜索栏输入字段使用的不同颜色。 输入字段中仅使用 TextFieldColors 参数完整列表的子集。所有其他参数都没有影响。
因此,更改我在问题中提到的属性将不会产生任何效果。
对于任何有同样问题的人,为了使颜色生效,您应该将它们放在输入字段中,如下所示:
SearchBar(inputField = {
SearchBarDefaults.InputField(
state = searchFieldState,
onSearch = {},
expanded = false,
onExpandedChange = {},
placeholder = { Text(text = "Search Reference") },
leadingIcon = {
Icon(
painter = painterResource(id = R.drawable.baseline_search_24),
contentDescription = "Search Icon"
)
},
// Change the colors here
colors = SearchBarDefaults.inputFieldColors(
focusedContainerColor = MaterialTheme.colorScheme.secondaryContainer,
unfocusedContainerColor = MaterialTheme.colorScheme.secondaryContainer)
)
}, expanded = false, onExpandedChange = {}) {
}