Android: контент скрыт за панелью приложения в безрамочном режиме.Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Android: контент скрыт за панелью приложения в безрамочном режиме.

Сообщение Anonymous »

Я усердно пытаюсь обновить свое приложение до API 35 с полной поддержкой. Я пытался следовать официальной документации Android здесь: https://developer.android.com/develop/u ... ge-to-edge
Однако я застрял. На странице, упомянутой выше, есть документация по реагированию на вставки для системных панелей, вырезов и жестов. Однако здесь ничего не говорится о том, как регулировать высоту панели приложения.
В моем приложении есть панель приложения с 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;
});
Когда я регистрирую значение insets.top, оно всегда равно нулю. Я бы надеялся, что insets.top будет включать высоту панели приложения, но это не так. Я не нашел хороших решений этой проблемы. Я могу жестко запрограммировать смещение верхнего поля, но это не окончательное решение, поскольку оно работает только для одной модели телефона.
Кто-нибудь еще сталкивался с этой проблемой? Буду признателен за любой совет, которым вы поделитесь.

Подробнее здесь: https://stackoverflow.com/questions/798 ... -edge-mode
Ответить

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

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

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

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

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