Панель навигации появляется, когда в MIUI появляется DropdownMenu из материала3Android

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Панель навигации появляется, когда в MIUI появляется DropdownMenu из материала3

Сообщение Anonymous »

У меня есть Activity со скрытой панелью навигации и чистым контентом Compose. Он работает как положено, пока не появится androidx.compose.material3.DropdownMenu. В этот момент панель навигации вернулась, она снова скрывается при закрытии меню: GIF1. Затем я сделал DropdownMenu(properties = PopupProperties(dismissOnBackPress = false)). Теперь панель навигации всплывает при появлении меню и быстро скрывается сама по себе с помощью анимации: GIF2.

Код: Выделить всё

@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>
➖
➖
➖
➖
😣 постоянная панель навигации GIF1


➕
➖
➖
➖
😕 прыгающая навигационная панель GIF2


➖
➕
➖
➖
😣 постоянная панель навигации


➖
➖➕
➖
😣 постоянная панель навигации


➕
➕
➕
➕
😕 прыгающая панель навигации



Ничего страшного, что все это происходит на MIUI 13. На относительно чистом Android 14 (Nothing OS) ничего подобного не происходит! 0 обходных путей (➖|➖|➖) приводят к отсутствию панели навигации, как и ожидалось, достаточно конфигурации MyActivity.
Как мне правильно запретить отображение панели навигации на первом месте для все платформы?

Подробнее здесь: https://stackoverflow.com/questions/783 ... rs-on-miui
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»