В многооконном режиме высота окна не включает высоту строки состояния.

Моя активность отображается под полупрозрачной строкой состояния.

Я получаю высоту окна, используя:

WindowManager manager = activity.getWindowManager();
DisplayMetrics metrics = new DisplayMetrics();
manager.getDefaultDisplay().getMetrics(metrics);
int height = metrics.heightPixels;

Эта высота правильная, включая высоту содержимого и высоту строки состояния, так как я рисую там, и у моего окна правильные флаги.

В многооконном режиме в Nougat, если мое приложение является верхним, оно все еще рисует под строкой состояния, но height не будет включать это значение.

Как получить реальную высоту окна в многооконном режиме, не запачкавшись?

Примечание

Я не хочу, чтобы высота экрана возвращалась, например. с помощью Display.getRealSize(). Мне нужна высота окна. Но если мое окно рисуется под строкой состояния, значение должно включать высоту строки состояния, как это происходит, когда многооконный режим отключен.

Больше информации

На самом деле, после перехода в многооконный режим значение height никогда не будет включать строку состояния, даже если вы после этого выйдете из многооконного режима. Например, на Nexus5X:

// Start the app in normal mode
height = 1794; // Everything except nav bar. OK!
// Go in multi-window mode.
// Go out of multi-window mode.
height = 1730; // Status bar height is not there anymore. :-(

Похоже на грязного грязного жука. В этом случае мне интересно, знает ли кто-нибудь об этом больше (устройства, уровни API, отчет об ошибках).


comment
Похоже, кто-то подал проблема AOSP, связанная с вашей проблемой.   -  person Bö macht Blau    schedule 16.12.2016
comment
@ 0X0nosugar да, похоже. Я думаю, вы можете опубликовать ответ.   -  person natario    schedule 16.12.2016


Ответы (1)


Возникла проблема с AOSP (219133) о проблемах с классом Display при использовании многооконного режима в предварительной версии Android 7.0.

Команда разработчиков заявляет, что они исправили ошибку, и исправление «будет доступно в будущих выпусках». Пока (версия 7.0 и 7.1) глючное поведение сохраняется.

person Bö macht Blau    schedule 17.12.2016