如何从 Kotlin 和 Jetpack Compose 中的枚举中选择值?

问题描述 投票:0回答:1

我正在将我的 iOS 应用程序转换为 Android。我有几个用于过滤数组的枚举。我有类别(女性、男性、混合)、联赛和分区。

在 SwiftUI 中,我使用的是

Picker {}.pickerStyle(SegmentedPickerStyle())
。我正在寻找一种在 Jetpack Compose 中执行相同操作的方法。我搜索的关键字没有找到任何东西。

那么,我如何从 Jetpack Compose 中的 Kotlin 枚举中直观地选择值?

kotlin swiftui android-jetpack-compose picker segmentedcontrol
1个回答
0
投票

尝试以下 Jetpack Compose“等效”:

@Composable fun MyExposedDropdownMenuBox() {

    val context = LocalContext.current
    val categories = arrayOf("Women", "Men", "Mixed")
    var expanded by remember { mutableStateOf(false) }
    var selectedText by remember { mutableStateOf(categories[0]) }

    Box(modifier = Modifier.fillMaxWidth().padding(32.dp)) {
        ExposedDropdownMenuBox(
            expanded = expanded,
            onExpandedChange = { expanded = !expanded }
        ) {
            TextField(
                value = selectedText,
                onValueChange = {},
                readOnly = true,
                trailingIcon = { 
                    ExposedDropdownMenuDefaults.TrailingIcon(
                        expanded = expanded
                    )
                },
                modifier = Modifier.menuAnchor()
            )    
            ExposedDropdownMenu(
                expanded = expanded,
                onDismissRequest = { expanded = false }
            ) {
                categories.forEach { item ->
                    DropdownMenuItem(
                        text = { Text(text = item) },
                        onClick = {
                            selectedText = item
                            expanded = false
                            Toast.makeText(context, 
                                           item, 
                                           Toast.LENGTH_SHORT).show()
                        }
                    )
                }
            }
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.