Android应用程序小部件虽然使用公式太大了

时间:2012-11-12 17:29:02

标签: android android-appwidget

我的Android应用的用户报告所包含的应用小部件太大了。

我使用过这个公式:

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

所以我为4x1小部件提供了294dp的宽度和72dp的高度。但是,正如我所说,用户报告该小部件占用的位置比4x1多。

这怎么可能发生?它与不同的Android版本有所不同吗?

编辑:我将其设置为最小宽度/高度和调整大小宽度/高度。我的appwidget的布局文件使用fill_parent,所以它不应该扩展那个大小。

2 个答案:

答案 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:minWidthandroid:minHeight

cell_size in dp = 70 × n − 30

您可以将工作小部件保留在现有文件夹中:

  • /res/xml
  • /res/layout

使用正确的论坛:

cell_size in dp = 74 × n - 2

为了简化并重复使用计算出的尺寸,您还可以在正确的文件夹中创建正确的尺寸并参考尺寸。

  • 创建一个包含Android版本尺寸的文件/res/values/widget_size.xml< 4.0
<resources>
    <dimen name="cell_size_1">72dp</dimen>
    <dimen name="cell_size_2">146dp</dimen> 
</resources>
  • 创建包含Android版本尺寸&gt; = 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"

不幸的是,这不适用于运行Android 4.04的Galaxy Tab 7.7。 3x1小部件是2x1,虽然它在模拟器上显示正确的大小。我认为这是因为

  

虽然细胞的宽度和高度以及数量   应用于窗口小部件的自动边距可能会因设备而异   使用下表粗略估算您的小部件的最小值   给定所需的占用网格单元数量的尺寸:

App Widget Design Guidelines

上说明