Нажатие за пределами выпадающего меню не закрывает меню, элемент выпадающего меню не получает клики

#android #android-jetpack-compose

Вопрос:

Я экспериментирую с выпадающим меню, и из документации следует, что оно должно вызывать onDismissRequest, когда я нажимаю снаружи:

onDismissRequest будет вызван, когда меню должно закрыться — например, когда есть кран за пределами меню или когда нажата клавиша «Назад».

Нажатие на кнопку «назад» может успешно закрыть меню.

Еще одна странная вещь заключается в том, что нажатие на раскрывающийся список не закрывает меню, поскольку оно также не может получать щелчки.

 class MainActivity : ComponentActivity() {   @ExperimentalMaterialApi  override fun onCreate(savedInstanceState: Bundle?) {  super.onCreate(savedInstanceState)  setContent {  SampleScreen()  }  } }  @Composable fun SampleScreen() {  Scaffold(bottomBar = {MyBottomBar()}) {  Text("hello world")  } }  @Composable private fun MyBottomBar() {  var expanded by remember { mutableStateOf(false) }  BottomAppBar {  Box(modifier = Modifier.fillMaxWidth()) {  Row(modifier = Modifier.align(Alignment.CenterEnd)) {  Box {  IconButton(  onClick = {expanded = true}  ) {  Icon(  Icons.Filled.MoreVert,  contentDescription = "more"  )  }  DropdownMenu(  expanded = expanded,  onDismissRequest = {  expanded = false  }  ) {  DropdownMenuItem(onClick = { expanded = false }) {  Text("item1")  }  DropdownMenuItem(onClick = { expanded = false }) {  Text("item2")  }  }  }  }  }  } }  

Экран:

образец экрана

Комментарии:

1. Когда я запускаю это локально, это работает нормально, в вашей среде должно быть что-то другое. Есть ли родительская композиция, которая могла бы перехватить этот жест?

2. Обновил код, чтобы показать, что других составных элементов нет. Кстати ,элементы также не получают кликов. Я запускаю его в API-интерфейсе эмулятора Pixel 3a 30 Android 11, а не на реальном устройстве.

3. Составьте версию 1.0.1

4. Я запустил ваш точный код на том же эмуляторе и той же версии композиции. Меню по-прежнему закрывается, когда я нажимаю снаружи

5. Спасибо за всю вашу помощь. Я попробовал это на реальном устройстве pixel 3, и оно работает. Затем я использую Pixel 5 AVD, и это тоже работает. Это означает, что он специфичен для моего AVD Pixel 3a…