相关疑难解决方法(0)

Jetpack Compose ExusedDropdownMenu 按下时不显示

我正在开发 Jetpack Compose (1.3.0-beta03) 和 Material3 (1.0.0-beta03) 应用程序。

我想向用户展示一个具有不同语言的简单下拉菜单,并且以下代码与您在网上找到的代码没有太大不同:

@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun Settings() {
    val languages = listOf("it", "en", "de", "ro", "fr", "es")

    var expanded by remember { mutableStateOf(false) }
    var selectedOptionText by remember { mutableStateOf("ro") }

    ExposedDropdownMenuBox(
        modifier = Modifier.padding(16.dp),
        expanded = expanded,
        onExpandedChange = { expanded = !expanded },
    ) {
        TextField(
            readOnly = true,
            value = selectedOptionText,
            onValueChange = {},
            label = { Text(stringResource(R.string.default_reading_language)) },
            trailingIcon = { ExposedDropdownMenuDefaults.TrailingIcon(expanded = expanded) },
            colors = ExposedDropdownMenuDefaults.textFieldColors(),
            modifier = …
Run Code Online (Sandbox Code Playgroud)

android android-jetpack-compose android-compose-textfield android-jetpack-compose-material3 android-compose-exposeddropdown

16
推荐指数
1
解决办法
5008
查看次数

无法使 ExposeDropdownMenu 与 OutlinedTextField 宽度相同

我遇到以下问题 - 下拉菜单项的宽度与 OutlinedTextField 的宽度不同

寻找解决方案 - 发现以下内容:

  1. 添加变量以保持textField宽度:

    var textFieldSize by remember { mutableStateOf(Size.Zero) }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 将值设置onGloballyPositionedTextField

    onGloballyPositioned { coordinates ->
        textFieldSize = coordinates.size.toSize()
    }
    
    Run Code Online (Sandbox Code Playgroud)
  3. 读取其中的值ExposedDropdownMenu

    ExposedDropdownMenu(
        expanded = expanded,
        onDismissRequest = { expanded = false },
        modifier = Modifier
            .background(Color.White)
            .width(with(LocalDensity.current) { textFieldSize.width.toDp() })
    )
    
    Run Code Online (Sandbox Code Playgroud)

问题是它可以很好地与 一起工作DropdownMenu,但不能与 一起工作ExposedDropdownMenu。有什么问题?

这是完整的代码:

var expanded by remember { mutableStateOf(false) }
val genderList by remember { mutableStateOf(listOf("Male", "Female")) }
var textFieldSize by remember { …
Run Code Online (Sandbox Code Playgroud)

kotlin android-jetpack-compose

15
推荐指数
1
解决办法
4730
查看次数

Jetpack Compose 是否提供 Material AutoComplete TextView 替代品?

在将我的应用程序迁移到 Jetpack compose 的过程中,我遇到了应用程序中 TextField 需要自动完成功能的部分。

但是,从版本 1.0.0-alpha05 开始,我找不到任何使用 Compose API 实现此目的的功能。我发现的最接近的东西是DropdownMenuDropdownMenuItem可组合项,但似乎需要大量手动管道才能从中创建自动完成菜单。

当然,显而易见的事情就是等待 Jetpack Compose 的未来更新。但我想知道,在迁移中遇到此问题的人是否找到了解决方案?

android material-components-android android-jetpack-compose

11
推荐指数
2
解决办法
8587
查看次数