2012-12-12 11 views
13

Ho scritto un widget che dovrebbe essere un blocco homescreen 4x2. E 'MinHeight e MinWidth, con conformità alla corrente pagina "App Widget Linee guida di progettazione" sonoDimensioni griglia errate del widget

android:minWidth="250dp" 
android:minHeight="110dp" 

E un'imbottitura viene applicata dal dimens.xml se la versione del sistema è inferiore a Ice Cream Sandwich

Sul mio Nexus 4 (xhdpi, Jellybean 4.2.1), questo widget è 4x2. Su un emulatore (hdpi, Gingerbread 2.3.3), questo widget è 4x2. Tuttavia, sul mio Nexus 7 (hdpi, Jellybean 4.2.1), il widget è 3x2. Non posso per la vita di me capire perché o come risolverlo. qualche idea?

risposta

10

Lars Vogel scrive in this Home Screen Widget tutorial che:

Come regola di calcolo è necessario definire la dimensione del widget con la formula: ((numero di colonne/righe) * 74) - 2. Si tratta di dispositivo pixel indipendenti e -2 è usato per evitare problemi di arrotondamento.

Modifica: apparentemente Vogel l'ha ottenuto dallo old Widget API documentation (scorrere verso il basso oltre la metà della pagina per vedere il riferimento).

Sulla base di questa misura, per un 4 celle di larghezza e 2 celle altezza, utilizzare 294 x 146 dip:

<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android" 
    android:minWidth="294dip" android:minHeight="146dip" 
    android:updatePeriodMillis="0" android:initialLayout="@layout/some_layout" /> 
+0

Come hai detto, 294x146 sarebbe sulla base della documentazione obsoleto. In accordo con i nuovi documenti ho usato le misure corrette per un widget 4x2 basato sulla nuova documentazione e il widget si registra come 4x2 su tutti i dispositivi tranne il mio Nexus 7, dove registra come 3x2 – Nick

+0

Cosa succede su Nexus 7 se usi le vecchie misure? –

+0

Beh, so che funzionerà, perché stavo usando le vecchie misurazioni su una versione precedente di questi widget. Tuttavia, con le vecchie misurazioni, ad esempio, un widget di attivazione 1x1 stava misurando 2x2 sul mio Nexus 4. Le nuove misurazioni dovrebbero essere per Ice Cream Sandwich e fino a dove il sistema operativo applica la propria imbottitura. Il Nexus 7 è in esecuzione 4.2 e quindi dovrebbe utilizzare le nuove misurazioni. Ho un padding applicato automaticamente ai widget se il sistema operativo è rilevato essere 3.xo inferiore – Nick

Problemi correlati