Отступ от статусбара для snackbar в android api 35
Хочу сделать отступ от статусбара для android api 35
, но не могу понять почему не отступает.
inline fun View.snackBarTop(string: String, length: Int = LENGTH_LONG, f: Snackbar.() -> Unit) {
val snackBarTop = make(this, string, length)
val snackBarView = snackBarTop.view
val params: LayoutParams = snackBarView.layoutParams as LayoutParams
params.gravity = Gravity.TOP
ViewCompat.setOnApplyWindowInsetsListener(snackBarView) { _, windowInsets ->
val insets = windowInsets.getInsets(
WindowInsetsCompat.Type.systemBars() or WindowInsetsCompat.Type.displayCutout()
)
snackBarView.translationY = insets.top.toFloat()
WindowInsetsCompat.CONSUMED
}
snackBarView.layoutParams = params
snackBarTop.f()
snackBarTop.show()
}
Ответы (1 шт):
Автор решения: Egor
→ Ссылка
В API 35 возможны изменения в поддержке различных типов Insets. Попробуйте заменить:
val insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemGestures())
на:
val insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars())
- systemGestures() возвращает отступы для системных жестов (например, свайпы с краев), которые могут быть заблокированы приложением.
- systemBars() возвращает отступы для статус-бара, навигационного бара и других системных элементов, которые всегда видны и учитываются при макетировании. Для отступа от статус-бара systemBars() чаще всего более корректен в вашей ситуации, так как он включает именно эти элементы, а не жесты управления системой.
https://developer.android.com/reference/android/view/WindowInsets.Type