如何解决jetpack 组合的公开下拉菜单
我想知道是否有针对 jetpack compose 的 Exposed 下拉菜单的解决方案? 我无法在 jetpack compose 中为这个组件找到合适的解决方案。有什么帮助吗?
解决方法
目前 1.0.0
(使用 1.0.0-beta08
测试)没有内置组件。
您可以使用 OutlinedTextField
+ DropdownMenu
。
这只是一个基本的(非常基本的)实现:
var expanded by remember { mutableStateOf(false) }
val suggestions = listOf("Item1","Item2","Item3")
var selectedText by remember { mutableStateOf("") }
val icon = if (expanded)
Icons.Filled.....
else
Icons.Filled.ArrowDropDown
Column() {
OutlinedTextField(
value = selectedText,onValueChange = { selectedText = it },modifier = Modifier.fillMaxWidth(),label = {Text("Label")},trailingIcon = {
Icon(icon,"contentDescription",Modifier.clickable { expanded = !expanded })
}
)
DropdownMenu(
expanded = expanded,onDismissRequest = { expanded = false },modifier = Modifier.fillMaxWidth()
) {
suggestions.forEach { label ->
DropdownMenuItem(onClick = {
selectedText = label
}) {
Text(text = label)
}
}
}
}
,
我这样做是为了使宽度与文本字段相同:复制和修改 Gabriele 的答案。
var expanded by remember { mutableStateOf(false) }
val suggestions = listOf("Item1","Item3")
var selectedText by remember { mutableStateOf("") }
var dropDownWidth by remember { mutableStateOf(0) }
val icon = if (expanded)
Icons.Filled.....
else
Icons.Filled.ArrowDropDown
Column() {
OutlinedTextField(
value = selectedText,modifier = Modifier.fillMaxWidth()
.onSizeChanged {
dropDownWidth = it.width
},modifier = Modifier
.width(with(LocalDensity.current){dropDownWidth.toDp()})
) {
suggestions.forEach { label ->
DropdownMenuItem(onClick = {
selectedText = label
}) {
Text(text = label)
}
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。