Big Chungus
11/28/2021, 2:35 PMKirill Grouchnikov
11/28/2021, 2:49 PMBig Chungus
11/28/2021, 2:52 PMIgor Demin
11/28/2021, 3:28 PMaltavir
11/28/2021, 4:23 PM@Composable
fun <T> DropDownSelect(
items: List<T>,
selected: MutableState<T>,
itemLabelBuilder: (T) -> String = { it.toString() },
modifier: Modifier = Modifier,
label: @Composable (() -> Unit)? = null
) {
var expanded by remember { mutableStateOf(false) }
Box(modifier = modifier.fillMaxWidth().wrapContentSize(Alignment.TopStart)) {
OutlinedTextField(
value = itemLabelBuilder(selected.value),
label = label,
onValueChange = {},
readOnly = true,
trailingIcon = {
Icon(Icons.Default.ArrowDropDown, "select", Modifier.clickable(onClick = { expanded = true }))
},
modifier = modifier.fillMaxWidth()
)
DropdownMenu(
expanded = expanded,
onDismissRequest = { expanded = false },
//modifier = Modifier.fillMaxWidth()
) {
items.forEach { item: T ->
DropdownMenuItem(
onClick = {
selected.value = item
expanded = false
}
) {
Text(text = itemLabelBuilder(item))
}
}
}
}
}
Probably not the most beautiful thing, but it works.