Различный расчет высоты контента между реальным и виртуальным устройствомAndroid

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

Сообщение Anonymous »

Я использую
WindowMetrics windowMetrics = getWindowManager().getCurrentWindowMetrics();
Insets insets = windowMetrics.getWindowInsets().getInsetsIgnoringVisibility(WindowInsets.Type.systemBars());

чтобы узнать размеры окна. На моем реальном устройстве Pixel 9 под управлением Android 16 я получаю следующие значения:
windowMetrics.getBounds().height(): 2424
insets.top: 173
insets.bottom: 126

После скрытия строки состояния высота представления контента сообщается как 2125. Это имеет смысл, поскольку она идеально соответствует возвращаемым выше показателям, т. е. 2424-173-126=2125.
Однако на виртуальном устройстве Android 16 поведение выглядит иначе. Прежде всего, вот показатели, возвращаемые на виртуальном устройстве Android 16:
windowMetrics.getBounds().height(): 2400
insets.top: 63
insets.bottom: 126

При скрытии строки состояния на виртуальном устройстве высота представления содержимого внезапно сообщается как 2274, т. е. 2400-126=2274. Что меня здесь смущает, так это то, что я ожидал, что высота просмотра контента будет равна 2211, т. е. 2400-63-126 = 2211, потому что я скрыл строку состояния, и она больше не видна. Тем не менее, я получаю 2274, что также противоречит поведению на реальном устройстве (см. выше), где высота просмотра контента со скрытыми строками состояния равна getBounds().height минус insets.top минус insets.bottom.
Может ли кто-нибудь объяснить, почему реальное и виртуальное устройство ведут себя здесь по-разному и как это исправить? Моя цель — надежно вычислить высоту просмотра контента до того, как будет установлено представление контента. Как показано выше, вычисление его на основе метрик по какой-то причине не кажется надежным...
РЕДАКТИРОВАТЬ
Я должен добавить, что целевая платформа API – 35, и что я отключил сквозное соединение, установив это в теме:
true


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

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

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

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

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

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