我的Android应用的用户报告所包含的应用小部件太大了。
我使用过这个公式:
width/height = (number-of-cells * 74) - 2
所以我为4x1小部件提供了294dp的宽度和72dp的高度。但是,正如我所说,用户报告该小部件占用的位置比4x1多。
这怎么可能发生?它与不同的Android版本有所不同吗?
编辑:我将其设置为最小宽度/高度和调整大小宽度/高度。我的appwidget的布局文件使用fill_parent
,所以它不应该扩展那个大小。
答案 0 :(得分:4)
This documentation page(我认为与Android 4.x相关)显示公式为:
width/height = `70 * n - 30`
...其中n
是所采用的细胞数。它还提到......
添加小部件后,它将被拉伸以占用最小值 水平和垂直的细胞数量,以满足其需要 minWidth和minHeight约束
根据问题中给出的尺寸,您的应用程序将在宽度方向上拉伸到5个单元格(320dp; 250dp是不够的),在高度方向上拉伸2个单元格(110dp; 40dp是不够的)。
答案 1 :(得分:4)
为不同的Android版本支持不同的小部件非常简单。
要支持Android版> = 4.0,您必须将您的小部件内容放在正确的文件夹中。
/res/xml-v14
/res/layout-v14
[可选] -v14
表示API级别14(Android 4.0)。 Android版本更高或等于4.0将使用这些文件夹中的文件。不要忘记使用正确的公式计算android:minWidth
和android:minHeight
:
cell_size in dp = 70 × n − 30
您可以将工作小部件保留在现有文件夹中:
/res/xml
/res/layout
使用正确的论坛:
cell_size in dp = 74 × n - 2
为了简化并重复使用计算出的尺寸,您还可以在正确的文件夹中创建正确的尺寸并参考尺寸。
/res/values/widget_size.xml
&lt; 4.0 <resources> <dimen name="cell_size_1">72dp</dimen> <dimen name="cell_size_2">146dp</dimen> </resources>
/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"
不幸的是,这不适用于运行Android 4.04的Galaxy Tab 7.7。 3x1小部件是2x1,虽然它在模拟器上显示正确的大小。我认为这是因为
上说明虽然细胞的宽度和高度以及数量 应用于窗口小部件的自动边距可能会因设备而异 使用下表粗略估算您的小部件的最小值 给定所需的占用网格单元数量的尺寸: