Многооконный режим Android Nougat minHeight

Кто-нибудь пробовал установить минимальную высоту для приложения в многооконном режиме Nougat?

Пробовал это,

<activity android:name=".MyActivity">
    <layout android:defaultHeight="500dp"
        android:defaultWidth="600dp"
        android:gravity="top|end"
        android:minHeight="450dp"
        android:minWidth="300dp" />
</activity>

Моя ссылка была такой: https://developer.android.com/guide/topics/ui/multi-window.html

Но разницы не нашел.

Приложение работает как обычно в многооконном режиме. Нет разницы в минимальной высоте для приложения.


person Vineeth    schedule 22.09.2016    source источник


Ответы (2)


В режиме разделенного экрана minHeight не изменяет минимальную высоту панели, в которой находится действие. Однако, цитируя документация:

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

Без minHeight, если пользователь перемещает разделитель и изменяет размер панели вашей активности, размер вашей активности изменяется.

С minHeight, если пользователь перемещает разделитель, и теперь панель вашей активности меньше, чем minHeight, ваша активность по-прежнему отображается на холсте minHeight. Однако затем этот холст обрезается, поэтому пользователь видит только его верхнюю часть minHeight.

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

person CommonsWare    schedule 22.09.2016
comment
Очень понятно... Работает так же, если приложение поддерживает только один макет. Но если для альбомной ориентации используется другой макет, и когда мы перемещаем разделитель на меньшее значение, приложение переключится на другую ориентацию. Как мы можем справиться с этим? - person Vineeth; 22.09.2016
comment
@Vineeth: Правда? Я не пробовал это. Мне придется провести несколько экспериментов. - person CommonsWare; 22.09.2016
comment
Попробуйте это. Приложение с разным макетом для портретной и альбомной ориентации. Так раздражает переключение на другую ориентацию, когда разделитель перетаскивается на меньшее значение. - person Vineeth; 22.09.2016
comment
@Vineeth: извините за задержку. Я просто воспроизвел ваши результаты. Вы ничего не можете сделать с этим напрямую. Либо убедитесь, что переход между книжной и альбомной ориентацией не слишком неприятный, либо обработайте это изменение конфигурации самостоятельно с помощью android:configChanges и onConfigurationChanged(). Там вы можете, по крайней мере, попробовать сделать что-то по-другому в многооконном режиме (через isInMultWindowMode()), хотя этот метод ненадежен. - person CommonsWare; 28.09.2016
comment
Спасибо за ответ. Но выполнение этого в моем приложении вызывает проблемы с производительностью, поскольку на экране работает TextClock и даже AlarmManager. Я уже работаю с этим, как вы упомянули, чтобы избавиться от этой проблемы и проблемы с нехваткой ресурсов в многооконном режиме. - person Vineeth; 04.10.2016
comment
@CommonsWare, когда я устанавливаю minHeight, видна только часть экрана, но когда я удаляю minHeight, появляется общий экран. Экран можно прокручивать. Это происходит только на мобильном устройстве, но отлично работает на планшете. Не могли бы вы помочь? - person Vinay; 01.11.2019
comment
@Vinay: понятия не имею, извини. - person CommonsWare; 01.11.2019

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

person Chaitanya Kusurkar    schedule 04.08.2018