Каков наилучший способ получить или рассчитать полезное пространство экрана - PullRequest
0 голосов
/ 31 октября 2018

Я пытаюсь получить полезное пространство экрана для моего приложения. Это будет пространство между панелью действий / инструментов и панелью навигации.
Причина, в которой я нуждаюсь. У меня есть шесть кнопок в макете ограничений, соединенных вертикально. Во время выполнения мне нужно изменить размер кнопок. Приложение имеет фиксированную альбомную ориентацию.
В конечном итоге я хочу ограничить нижнюю кнопку цепочки нижним родительским элементом или панелью навигации (если она существует), а верхнюю кнопку - панелью действий / инструментов.

Я обнаружил, что есть ресурс атрибута для панели действий / панели инструментов, которым я ограничиваю верхнюю часть цепочки.

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

enter image description here

enter image description here

Ответы [ 2 ]

0 голосов
/ 02 ноября 2018

Есть еще один способ сделать это, если предыдущий ответ не работает по какой-либо причине. В редакторе макетов поместите кнопки в макет ограничений и ограничьте их одно другим. Установить ограничения, которые нужно исправить, например, 8dp. Первая кнопка ограничена верхней частью корневого макета, последняя - нижней. Наконец, установите высоту кнопок, чтобы "соответствовать ограничению". Я нахожусь на мобильном телефоне, поэтому я не могу скопировать любой xml, но это должно заставить высоту управляться размером корневого макета и длиной ограничения

0 голосов
/ 01 ноября 2018

шагов:

  1. Получить высоту окна
  2. изменить размер изображения пропорционально этой высоте

добавить этот код где-нибудь после setContentView или после инфляции:

// root layout is the constraint layout which holds the buttons
rootLayout.addOnLayoutChangeListener(new View.OnLayoutChangeListener() {
            @Override
            public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) {
                int rootHeight = v.getHeight();
                int btnHeight = rootHeight/6;
                btn1.getLayoutParams().height = btnHeight;
                btn1.requestLayout();
                btn2.getLayoutParams().height = btnHeight;
                btn2.requestLayout();
                // and same for the rest of your views
            }
        });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...