小部件错误的网格大小

Nic*_*ick 13 android widget sizing android-appwidget

我写了一个应该是4x2主屏幕块的小部件.这是minheight和minwidth,根据当前的"App Widget Design Guidelines"页面

android:minWidth="250dp"
android:minHeight="110dp"
Run Code Online (Sandbox Code Playgroud)

如果系统版本低于Ice Cream Sandwich,则应从dimens.xml应用填充

在我的Nexus 4(xhdpi,Jellybean 4.2.1)上,这个小部件是4x2.在模拟器(hdpi,Gingerbread 2.3.3)上,这个小部件是4x2.然而,在我的Nexus 7(hdpi,Jellybean 4.2.1)上,小部件是3x2.我不能为我的生活弄清楚为什么或如何解决它.有什么想法吗?

Gun*_*son 11

Lars Vogel在这个Home Screen Widget教程中写道:

作为计算规则,您应该使用以下公式定义窗口小部件的大小:((列数/行数)*74) - 2.这些是设备无关的像素,-2用于避免舍入问题.

编辑:显然Vogel从旧的Widget API文档中获取它(向下滚动到中间页面以查看参考).

根据此测量,对于4个单元宽度和2个单元高度,使用294 x 146 dip:

<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
    android:minWidth="294dip" android:minHeight="146dip"
    android:updatePeriodMillis="0" android:initialLayout="@layout/some_layout" />
Run Code Online (Sandbox Code Playgroud)