Страницы

Поиск по вопросам

суббота, 30 ноября 2019 г.

Как правильно установить размер виджета?

#android #android_widgets #виджет


Мне необходимо сделать виджет размером 4x1 ячейки. Для этого я использую простой код:


Я тестирую его на двух виртуальных устройствах Genymotion:

Google Nexus 7, 800x1280, Android
4.4.4 Samsung Galaxy S5, 1080x1920, Android 4.4.4

И получаю два разных результата:
При android:minWidth="250dp" и android:minHeight="40dip" (новая формула):

Google Nexus 7 - 3x1
Samsung Galaxy S5 - 4x1

При android:minWidth="292dp" и android:minHeight="70dip" (старая формула):

Google Nexus 7 - 4x1
Samsung Galaxy S5 - 4x2

Как видно, размер виджета зависит от разрешения экрана и в любом случае высчитывается
некорректно (либо 3x1, либо 4x2). Так как же правильно установить размер виджета?    


Ответы

Ответ 1



Я так понимаю, здесь дело не в разрешении, а в разметке устройства. Действительно, вы взяли хороший пример для того, чтобы проверить default-размер виджета при его создании, так как одно устройство типа phone и разметка скорей всего у него 4х4, а другое типа tablet, там разметка другая, возможно 6х6. Google guide предлагает формулу: 70хN-30 гдe N - количество столбцов или строк. Например, для того, чтобы сделать длину виджета 4 ячейки: 70х4-30=250dp - устанавливаем android:minWidth="250dp" - это действительно работает на телефонах, но как только мы пробуем поставить на планшет, то возникает проблема. Я по своему небольшому опыту могу предложить решение: android:minWidth="1" android:minHeight="1" устанавливаем такие параметры, и там же прописываем android:resizeMode="horizontal|vertical" Тогда вы получаете виджет с 1 ячейкой и можете растянуть до нужного размера, такой пример имеет свои недостатки но работает. Можете разделить установку виджета, для телефона или планшета. Для телефона 4х4 используем формулу 70хN-30, для планшета я использовал значение 96х96dp это полный размер ячейки. То есть, в вашем примере, для Google Nexus 7, чтобы сделать виджет с изначальным размером 4х2, нужно установить значения: android:minHeight="192dp" android:minWidth="384dp" Все кончено зависит от конечного результата, но надеюсь это Вам хоть немножко поможет.

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

Отправить комментарий