Однако я застрял. На странице, упомянутой выше, есть документация по реагированию на вставки для системных панелей, вырезов и жестов. Однако здесь ничего не говорится о том, как регулировать высоту панели приложения.
В моем приложении есть панель приложения с LinearLayout (содержащим TextView и несколько кнопок) под ней. В старых версиях Android макет работает нормально. Но в режиме от края до края верхний сантиметр контента скрыт за панелью приложения. Вот скриншот:
рядом скриншоты ожидаемого и фактического поведения.
Вот код, который я использую для компенсации сквозного изображения: (обертка — это имя моего объекта LinearLayout)
Код: Выделить всё
ViewCompat.setOnApplyWindowInsetsListener(wrapper, (v, windowInsets) -> {
Insets insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars());
v.setPadding(insets.left, insets.top, insets.right, insets.bottom);
return WindowInsetsCompat.CONSUMED;
});
Код: Выделить всё
ViewCompat.setOnApplyWindowInsetsListener(wrapper, (v, windowInsets) -> {
Insets insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars());
ViewGroup.MarginLayoutParams mlp = (ViewGroup.MarginLayoutParams) v.getLayoutParams();
mlp.leftMargin = insets.left;
mlp.topMargin = insets.top;
mlp.rightMargin = insets.right;
mlp.bottomMargin = insets.bottom;
v.setLayoutParams(mlp);
return WindowInsetsCompat.CONSUMED;
});
Кто-нибудь еще сталкивался с этой проблемой? Буду признателен за любой совет, которым вы поделитесь.
Подробнее здесь: https://stackoverflow.com/questions/798 ... -edge-mode
Мобильная версия