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

#java #android #kotlin

#java #Android #kotlin

Вопрос:

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

 val resources: Resources = this.resources
        val resourceId: Int = resources.getIdentifier("navigation_bar_height", "dimen", "android")
        val lengthNavBar = if (resourceId > 0) {
            resources.getDimensionPixelSize(resourceId)
        } else 0
  

Я подумал, что, возможно, это будет похоже на панель действий, но ничего не сработало.
Просто для ясности, для меня панель приложений — это :

введите описание изображения здесь

И это может быть в зависимости от устройства: (Вот почему мне нужно динамическое значение)

введите описание изображения здесь

Заранее спасибо!

Комментарии:

1. И зачем вам нужно знать это значение? Эти скриншоты даже не полноэкранные.

2. Потому что где-то в моем приложении я получаю rootview в виде растрового изображения, например скриншота, и я хочу удалить полосы сверху. Итак, мне нужно получить их высоту. Спасибо за ваш ответ, я посмотрю его завтра

Ответ №1:

Эта часть называется строкой состояния, обычно она имеет высоту 24dp, но с такими надрезами, как этот, это, по крайней мере, высота надреза:

В книжной ориентации без установленных специальных флагов строка состояния должна простираться как минимум на высоту выреза.

Вот руководство по работе с вырезами — в принципе, вам, вероятно, вообще не стоит беспокоиться о высоте. По умолчанию вы можете просто притвориться, что его там нет, если вам нужно управлять им и отображать там свой собственный контент, вы можете установить флаги. Если вам нужно значение:

Избегайте жесткого кодирования высоты строки состояния, так как это может привести к перекрытию или отключению содержимого. Там, где это возможно, используйте WindowInsetsCompat для получения высоты строки состояния и определения соответствующего заполнения для применения к вашему контенту.

Комментарии:

1. Также думаю, что это значение не имеет значения, потому что оно находится за пределами порта просмотра приложения. Если что-то имеет значение, то это только оставшаяся высота, доступная приложению для отображения чего-либо.

2. Вы можете отображать содержимое в этой области, поэтому есть рекомендации по его обработке. Плюс прозрачные строки состояния и «режим погружения» существуют уже давно. Это просто зависит от того, нужно ли вам отображать там свой собственный контент или вы можете его игнорировать

3. Для специальных режимов отображения это может сыграть роль, но не для того, что показывают скриншоты.

4. Спасибо за ссылки, это мне очень помогло! Благодаря вам я нашел способ избежать работы с этой панелью 🙂

Ответ №2:

Первое изображение даже не является частью приложения, но это системный пользовательский интерфейс. Можно было бы получить значение из отображаемого компонента, но высота строки состояния системного пользовательского интерфейса не имеет значения.

Область, в которой написано «Accueil», должна быть ?android:attr/actionBarSize или android.R.attr.actionBarSize , значение по умолчанию 56dp .