Код: Выделить всё
@Composable
fun MenuSample(onSearch: () -> Unit) {
var expanded by remember { mutableStateOf(false) }
DropdownMenu(
expanded = expanded,
onDismissRequest = { expanded = false },
properties = PopupProperties(dismissOnBackPress = false)
) {
DropdownMenuItem(
text = { Text("Search") },
onClick = onSearch,
leadingIcon = {
Icon(
Icons.Outlined.Search,
contentDescription = null
)
})
}
}
Код: Выделить всё
class MyActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
Companion.window = window
hideNavBarAgain()
setContent { MyJetpackContent() }
}
companion object { //for experimentation purposes
var window: Window? = null
fun hideNavBarAgain() {
WindowInsetsControllerCompat(window!!, window!!.decorView).let { controller ->
controller.hide(WindowInsetsCompat.Type.navigationBars())
controller.systemBarsBehavior = WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE
}
}
}
}
[*]dismiss-false -- Properties = PopupProperties(dismissOnBackPress = false) в качестве аргумента DropdownMenu (мое первоначальное открытие)
[*]SideEffect -- SideEffect { MyActivity.hideNavBarAgain() (предложено @rafael-moreira), во всех возможных составных областях MenuSample а также вокруг него.
[*]remCorSc.launch --memberCoroutineScope.launch { MyActivity.hideNavBarAgain() в пользовательском щелчке лямбда, которая включает меню. Также без области сопрограммы в том же месте.
[*]onPlaced -- Modifier.onPlaced { MyActivity.hideNavBarAgain() как для DropdownMenu, так и для DropdownMenuItem
< /ul>
Матрица экспериментов (панель навигации во всех случаях скрыта в OnCreate()):
dismiss-false
SideEffect
remCorSc.launch
onPlaced
outcome
< tr>
Ничего страшного, что все это происходит на MIUI 13. На относительно чистом Android 14 (Nothing OS) ничего подобного не происходит! 0 обходных путей (
Как мне правильно запретить отображение панели навигации на первом месте для все платформы?
Подробнее здесь: https://stackoverflow.com/questions/783 ... rs-on-miui