我遇到了我的小部件大小的奇怪问题。 我决定开发一个支持ldpi,mdpi,large-mdpi和hdpi屏幕的简单小部件。 起初我创建了xml / widget.xml,我在其中定义了以下内容:
<appwidget-provider
xmlns:android="http://schemas.android.com/apk/res/android"
android:minHeight="146dip"
android:minWidth="220dip"
android:updatePeriodMillis="0"
android:initialLayout="@layout/widget"/>
所以我希望我的小部件将为所有支持的屏幕占用3x2个单元格。 然后我设计了几个布局,每个屏幕类型一个 - ldpi,mdpi,large-mdpi和hdpi - 其中:
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/Widget"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
...
</RelativeLayout>
所以我希望小部件大小适合所有屏幕的3x2单元格,而不是更多,而不是更少。 但是目前当我在模拟器(以及真实设备)上运行它时,我看到我的小部件需要 所有支持屏幕的屏幕超过一半 - 如果是4x3单元格 说最大尺寸是4x4细胞(如下所述: http://developer.android.com/guide/practices/ui_guidelines/widget_design.html#sizes)。 即使我在我的小部件中定义了确切的layout_width和layout_height 在倾斜的布局中它仍将需要4x3单元格,只是它的可见部分 将有另一个大小。
答案 0 :(得分:2)
好吧,看起来模拟器并不总是刷新我的应用程序,这就是为什么我看到我的旧尺寸而不是新尺寸。我的朋友还说,如果使用startActivityForResult,模拟器通常不会更新应用程序。因此,在这种情况下,最好手动重启widget。希望对别人有所帮助:)
答案 1 :(得分:0)
来自http://developer.android.com/guide/topics/appwidgets/index.html
因为主屏幕的布局方向(以及单元格大小)可以改变,所以根据经验,您应该假设单元格的高度和宽度的最坏情况单元格大小为74像素。但是,必须从最终维度中减去2才能解决像素计数中出现的任何整数舍入错误。要以与密度无关的像素(dp)查找最小宽度和高度,请使用以下公式: (细胞数* 74) - 2