Я использую
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
Различный расчет высоты контента между реальным и виртуальным устройством ⇐ Android
Форум для тех, кто программирует под Android
1767627163
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.
Может ли кто-нибудь объяснить, почему реальное и виртуальное устройство ведут себя здесь по-разному и как это исправить? Моя цель — надежно вычислить высоту просмотра контента [b]до того, как[/b] будет установлено представление контента. Как показано выше, вычисление его на основе метрик по какой-то причине не кажется надежным...
[b]РЕДАКТИРОВАТЬ[/b]
Я должен добавить, что целевая платформа API – 35, и что я отключил сквозное соединение, установив это в теме:
true
Подробнее здесь: [url]https://stackoverflow.com/questions/79860922/different-content-height-calculation-between-real-and-virtual-device[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия