2015-01-02 4 views
0

Я разработал приложение, которое должно занимать ширину 4 ячеек и высоту 1 ячейку.Проблема AppWidget на планшетах

Исходя из этого docs должен быть 4x1 appwidget:

<?xml version="1.0" encoding="utf-8"?> 
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android" 
android:minWidth="250dp" 
android:minHeight="40dp" 
android:updatePeriodMillis="90000000" 
android:previewImage="@drawable/widgetlayout_2" 
android:initialLayout="@layout/main" > 
</appwidget-provider> 

Примечание:@layout/main имеет ширину и высоту match_parent. Это не имеет никакого отношения к размеру appwidget, поэтому я не размещаю XML-code из main.

Everythink отлично работает на телефонах, возможно, потому что вы не можете повернуть их, когда на главном экране.

Но на планшете (проверено Nexus 10 XHDPI 2560x1600 API16) в appWidget только измеряется с 3x1!

Существует аналогичный question на стеке без ответа. Может, кто-то получил обновление.

Следующая проблема заключается в том, что в ландшафте мой дизайн приложения выглядит так, как ожидалось. Но в «Портрет» мой appWidget получил сжатие на рабочем столе, макет перепутался? Кто-нибудь знает, как предотвратить это, моим единственным подходом было бы определить папку layout-xlarge-port в моем проекте и установить индивидуальный макет для планшета в режиме порта там?

Любая помощь приветствуется!

+0

Какие требуемые размеры ячеек? 4x1? – waqaslam

+0

@waqaslam эй, я не указал их, я позволяю ОС выбирать абсолютный dp по ширине и высоте, я просто хочу, чтобы у них было 4x1, и поэтому я объявил 'min-width' 250dp и' minHeight' 40dp! – MMike

ответ

0

Для того, чтобы сделать 4x1 клетки виджет, вам необходимо указать ваш MinWidth и MinHeight, используя следующую формулу:

dpSize = (количество ячеек * 74) - 2

Так математически, он должен оказался:

android:minWidth="294dp" 
android:minHeight="72dp" 

Эти размеры установят установку вашего виджета по умолчанию на 4x1 конфигурации ячеек. Установка виджета на планшетах (которые могут содержать более четырех горизонтальных ячеек) также будет учитывать те же размеры, что и в телефонах.

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

//for example this will set the minimum allowed re-size of 2x2 cells 
android:minResizeWidth="146dp" 
android:minResizeHeight="146dp" 
android:resizeMode="horizontal|vertical" 

Я думаю, что его хорошая идея, чтобы не определить распределение клеток вашего виджета более 4x4, поскольку это разделение легко подходит для телефонов и планшетов и позволяет пользователю изменять размер. Но в случае, если у вас есть желание для большего разделения ячеек для таблиц, я бы предложил вам определить несколько appwidget-provider с пользовательскими настройками ячеек в папках, соответствующих плотности экрана устройства. Например:

res 
|-xml   //for ordinary screens, like phones and phablets 
|-xml-w820dp //for devices with minimum with of 820dp, like hi-res tablets and etc. 
+0

У меня вопрос, когда minHeight 72dp, почему я устанавливаю minResizeHeight на 146dp? для меня это не имеет смысла. Разве это не должно быть 72dp? 'Update' ах понимаю, я не читал строки, что это пример для 2x2 ячеек. Я проверю его и дам вам отзыв. спасибо – MMike

Смежные вопросы