2012-11-12 67 views
3

我的Android應用程序的用戶報告包含的應用程序部件太大。Android應用程序部件太大,雖然使用公式

我用這個公式:

width/height = (number-of-cells * 74) - 2 

所以我得到了一個4X1部件294dp的寬度和高度72dp。但是,正如我所說的,用戶報告說,小部件比4x1佔用更多的位置。

這是怎麼發生的?它與不同的Android版本有所不同嗎?

編輯:我已將此設置爲最小寬度/高度和調整大小寬度/高度。我的這個appwidget的佈局文件使用fill_parent,所以它不應該擴展這個尺寸。

+0

說你有一些屏幕截圖?或者要求用戶進行屏幕截圖。也許用戶只需要在你的佈局中填充一些內容。我使用 android:minWidth =「294dip」 android:minHeight =「72dip」 它在Android 2.1上完美地安卓4.2 :) – jaumard

+0

是的,這些也是我使用的值。但對於Android 4.0+,它們絕對不正確。請參閱文檔中給出的公式(鏈接raina77ow的答案)。也許你沒有將目標SDK級別設置爲14+,這是真的嗎?也許這會導致你的價值觀仍然在Android 4上工作? – caw

回答

4

This documentation page(相關於Android 4.x中,我想)表明,該公式爲:

width/height = `70 * n - 30` 

...其中n是採取細胞的數目。它還提到...

當添加窗口小部件時,它會被拉伸以佔據最小 細胞數量,水平和垂直方向,以滿足其 minWidth和制約了minHeight需要

根據問題中提供的尺寸,您的應用程序將在寬度方向上延伸至5個單元(320dp; 250dp不夠),並且2個單元(110dp; 40dp不夠)在高度上延伸。

+0

謝謝!這是新的,適用於Android 4.0+嗎?我確信這是我早期版本的價值觀,這可能是真的嗎?因此,如果我的應用必須覆蓋Android 2.2到Android 4.1,我需要依靠哪些尺寸? – caw

+1

我不知道,但它看起來公式已在Android 4.0中發生了變化(我通過Wayback Machine快速瀏覽一下,似乎證實了這一建議;公式是您在Android 3.1版本中展示的公式的頁面)。 – raina77ow

+0

非常感謝!你看,這使得一切都很困難。如果應用程序不僅涵蓋Android 4.0,是否有人知道使用哪些值?這應該成爲許多開發人員不得不面對的問題,因爲大多數應用程序都支持Android 2或至少Android 3。 – caw

4

爲了支持不同Android版本的不同小部件非常簡單。

對於支持Android版本> = 4.0,您必須將小部件放入正確的文件夾中。

  • /res/xml-v14
  • /res/layout-v14 [可選]

-v14意味着API級14(Android 4.0版本)。 Android版本高於或等於4.0將使用這些文件夾中的文件。不要忘了使用正確的公式來計算android:minWidthandroid:minHeight

cell_size in dp = 70 × n − 30 

可以留在現有的文件夾你的工作部件:

  • /res/xml
  • /res/layout

使用正確forumla:

cell_size in dp = 74 × n - 2 

爲了保持簡單並重新使用計算的尺寸,您還可以在正確的文件夾中創建正確的尺寸並參考尺寸。

  • 創建一個文件/res/values/widget_size.xml包含Android版本的尺寸< 4.0
<resources> 
    <dimen name="cell_size_1">72dp</dimen> 
    <dimen name="cell_size_2">146dp</dimen> 
</resources> 
  • 創建包含用於Android版本> = 4.0
尺寸 /res/values-v14/widget_size.xml一個文件
<resources> 
    <dimen name="cell_size_1">40dp</dimen> 
    <dimen name="cell_size_2">110dp</dimen> 
</resources> 
  • 參考窗口小部件到新創建的尺寸的大小。
android:minWidth="@dimen/cell_size_2" 
android:minHeight="@dimen/cell_size_1" 

不幸的是,這並不在我的Galaxy Tab 7.7工作運行Android 4.04。 3x1小部件是2x1,但它在模擬器上顯示正確的大小。我認爲它是由於

雖然施加到細胞作爲寬度和高度以及將 自動邊距量小部件-可以跨設備而異,可以 使用下表大致估計 Widget的最低 尺寸,考慮到所需數量佔據網格單元:

App Widget Design Guidelines

+0

謝謝!另一種可能性是具有一個常見的XML和佈局文件夾,並且只將尺寸放在版本特定的文件夾中。順便說一句,我有一個三星設備顯示部件爲3x1而不是4x1。 – caw

+0

這似乎是一個更簡單的解決方案(將更新我的答案)。你正在運行(原始)三星Android版本?也許這是一個三星的具體問題。 – marnaish

+0

是的,我擁有三星Galaxy Tab 2 10.1,我正在運行股票軟件。可以是三星專用的,是的。 – caw

相關問題