2

因此,我阅读了小部件尺寸并创建了一个 250dpX72dp 小部件,希望它每行占据 4 列。在我的 2.2 设备上它确实按预期显示,但在我的 4.2 设备上它突然占用了 4x2。

我认为每个单元格的大小计算为 (cells * 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"
   />
4

3 回答 3

3

您需要从 API 11 开始应用不同的公式;根据文档,它的 (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 大小计算

于 2013-03-28T11:07:39.203 回答
0

考虑到 Stackoverflow 上的多个问题,我并不是唯一一个感到困惑的人。

似乎谷歌确实改变了——相当显着地——小部件尺寸的计算。

如何在 Android 主屏幕上制作 4x1 大小的小部件?

于 2013-03-22T21:59:49.617 回答
0

看着:

http://developer.android.com/guide/practices/ui_guidelines/widget_design.html#anatomy_determining_size

所以似乎 72dp 映射到 2 个单元格。

于 2013-03-22T21:46:01.783 回答