Не могу найти правильный размер экрана - PullRequest
0 голосов
/ 01 ноября 2019

Я выполняю полноэкранное действие, которое также включает метки, и я не могу найти ширину и высоту экрана. Я пробовал это:

val wm = getSystemService(Context.WINDOW_SERVICE) as WindowManager
val display = wm.defaultDisplay
val metrics = DisplayMetrics()
display.getMetrics(metrics)
val width = metrics.widthPixels
val height = metrics.heightPixels

Возвращает правильную ширину (1080), но неправильную высоту (2129 вместо 2340). В чем проблема?

Ответы [ 2 ]

1 голос
/ 01 ноября 2019

Вы запрашиваете размер области приложения, который может занимать не весь размер экрана. От Display class docs :

Область отображения приложения указывает часть экрана, которая может содержать окно приложения, за исключением системных украшений. Область отображения приложения может быть меньше реальной области отображения, потому что система вычитает пространство, необходимое для элементов декора, таких как строка состояния. Используйте следующие методы для запроса области отображения приложения: getSize (Point) , getRectSize (Rect) и getMetrics (DisplayMetrics)

Справа внизу есть подсказка о том, как приблизиться к физическим показателям дисплея (однако учтите, что все еще есть случаи, когда это не возвращает физические показатели вашего дисплея):

Реальная область отображения определяет часть дисплея, которая содержит контент, включая системные декорации. Тем не менее, реальная область отображения может быть меньше, чем физический размер дисплея, если оконный менеджер эмулирует дисплей меньшего размера, используя (adb shell wm size). Используйте следующие методы для запроса реальной области отображения: getRealSize (Point) , getRealMetrics (DisplayMetrics)

Таким образом, ваш код должен быть:

val metrics = DisplayMetrics()

display.getRealMetrics(metrics)

val width = metrics.widthPixels
val height = metrics.heightPixels
0 голосов
/ 01 ноября 2019

попробуйте этот способ java-кода в kotlin

int width = ((Activity) mcontext).getWindowManager().getDefaultDisplay()
                    .getWidth();

 int height= ((Activity) mcontext).getWindowManager().getDefaultDisplay()
                    .getHeight();

надеюсь, это поможет вам

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...