16

可能是我,但是当我根据 android 页面上给出的公式计算最小应用程序小部件大小时,我没有得到正确的小部件宽度;公式如下

宽度(n) = (70 xn) - 30

当我想要一个 5x1 小部件时,正确的宽度是 (5 * 70) - 30 = 320dp。然而,在摩托罗拉 Xoom 上测试它时,它解析为 4x1 小部件。我已经测试了不同的值,400dp 在带有 Honeycomb 的摩托罗拉 xoom 上似乎适合 5x1,但随后我会在带有 Gingerbread 的常规 Galaxy Tab 上对其进行测试,然后它会解析为 6x1(正如人们所期望的那样)。

所以这里有两个问题;

  • 我忽略了姜饼和蜂窝有什么区别?
  • 因为我知道 ICS 小部件大小不再有小部件之间的填充,所以这里也有一些经验法则吗?
4

4 回答 4

24

在我的4x1 小部件中,我将这些尺寸用于res/values/dimens.xml

<!-- size = (74 x n) - 2 -->
<dimen name="appwidget_margin">0dp</dimen>
<dimen name="appwidget_min_width">294dp</dimen>
<dimen name="appwidget_min_height">72dp</dimen>

对于res/values-v14/dimens.xml

<!-- size = (70 x n) - 30 -->
<dimen name="appwidget_margin">0dp</dimen>
<dimen name="appwidget_min_width">250dp</dimen>
<dimen name="appwidget_min_height">40dp</dimen>

我将小部件模板包用于背景图像。

官方指南中,res/values/dimens.xml 中的默认边距应为 8dp,但如果我使用 8dp,我的小部件会小于桌面上的标准小部件(谷歌搜索、天气等)。那是因为 v1-v13 的边距是在背景图像中构建的:

在此处输入图像描述

我在 HTC Desire、Nexus S、模拟器 Android 2.2 和模拟器 Android 2.3.3 上对其进行了测试。使用上面的模板包背景和配置,我的小部件的大小与其他标准小部件相同,并且在我测试的所有设备上看起来都不错。

各种发射器也存在问题。我推荐这篇文章阅读:http ://radleymarx.com/blog/app-widget-padding-margins-in-ics-android/

于 2012-06-18T16:23:04.577 回答
10

没有太多设备完全遵循 Google 的建议公式。您最好使用几个 xml-xxx 文件夹,这些文件夹可以指定更准确的 minWidth 和 minHeight 对应于不同的屏幕和操作系统。

现在我四个完全基于操作系统:

xml       // standard
xml-v11   // Honeycomb grid
xml-v14    // ICS's new extra padding
xml-sw552dp-v14  // ICS tablet padding

但是当我微调时,我可能必须为特定的 dpi 或屏幕添加一些新文件夹。

快速更新:

只有一些设备使用自动填充。三星和 HTC 具有使用全角小部件的自定义 UI,因此它们会覆盖启动器上的操作系统填充。

于 2012-04-12T02:46:31.350 回答
4

在 ICS 中没有填充,有自动填充。您使用的公式适用于 ICS。对于旧版本,还有另一个公式:

num*74 - 2
于 2012-04-04T12:29:08.493 回答
1

注意:如果您以 pre-Honeycomb 为目标(或在指定蜂窝之前的 minSdkVersion 时未指定 targetSdkVersion),则蜂窝网格(和 ICS 网格)计算不会生效。这样做的缺点是您错过了较新的操作系统功能,但如果您实际上并不需要它们,那么保留目标 pre-honeycomb 将省去自定义 xml 文件夹的麻烦。

于 2012-08-21T12:27:11.723 回答