2013-03-22 62 views
2

因此,我閱讀了窗口小部件的大小,並創建了一個250dpX72dp窗口小部件,期望它佔用一行4列。在我的2.2設備上的確如預期的那樣顯示,但是在我的4.2設備上它突然佔用了4x2。爲什麼我的主屏幕小部件需要兩行而不是一行?

我想計算每個細胞的大小爲(細胞* 74) - 2.

小部件定義如下:

<?xml version="1.0" encoding="utf-8"?> 
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android" 
    android:initialLayout="@layout/widget" 
    android:minHeight="72dp" 
    android:minWidth="250dp" 
    /> 

回答

0
+0

這在某種程度上改變了Android版本? http://www.vogella.com/articles/AndroidWidgets/article.html#overview_size Widget會在主屏幕上顯示一定數量的單元格。單元通常用於顯示一個應用程序的圖標。作爲計算規則,您應該使用以下公式定義小部件的大小:((列數/行數)* 74) - 2.這些是與設備無關的像素,-2用於避免舍入問題。 此外,我的舊Android設備確實顯示在一行中。 – 2013-03-22 21:53:15

+0

我的猜測是,使用Honeycomb和ICS +可以調整主屏幕小部件Google進行更改。如果您的目標是SDK 14,則通過我的鏈接,他們自己添加少量的保證金。 – 2013-03-22 22:08:40

+0

@ user1993392 Vogella的文章已過時。自ICS以來的新公式(70 * n) - 30 – 2013-08-05 13:37:59

3

您需要應用不同的公式從API 11起;根據documentation其(70 * n) - 30;所以這意味着您應該將minHeight設置爲40.您可以在不同的資源文件夾中創建兩個資源(valuesvalues-v11),這樣您可以根據values/<insert fancy name here>.xml中的舊公式指定高度,並根據高度在values-v11/<insert fancy name here>.xml

注意新的公式,你也應該考慮到利潤率從API 15了,這是在一個類似的方式完成:http://developer.android.com/guide/topics/appwidgets/index.html#CreatingLayout

目前似乎仍然是與較新的設備的大小怪癖不過,250dp需要3列而不是4個。

請參閱也Appwidget size calculation

+0

您確定您應該考慮API 15的利潤率,是不是API 14? – 2013-08-05 13:39:24

+0

+1因爲這些問題很容易忽略 – Guykun 2013-08-30 11:19:52

+0

此外,您需要應用從API 14開始而不是11開始的不同公式。蜂窩API(11,12和13)使用原始公式(74 x n) - 2 – 2013-09-18 21:48:30

相關問題