Android:Widget需要太多的地方

时间:2011-05-16 06:49:19

标签: android android-widget

我遇到了我的小部件大小的奇怪问题。 我决定开发一个支持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单元格,只是它的可见部分 将有另一个大小。

2 个答案:

答案 0 :(得分:2)

好吧,看起来模拟器并不总是刷新我的应用程序,这就是为什么我看到我的旧尺寸而不是新尺寸。我的朋友还说,如果使用startActivityForResult,模拟器通常不会更新应用程序。因此,在这种情况下,最好手动重启widget。希望对别人有所帮助:)

答案 1 :(得分:0)

来自http://developer.android.com/guide/topics/appwidgets/index.html

因为主屏幕的布局方向(以及单元格大小)可以改变,所以根据经验,您应该假设单元格的高度和宽度的最坏情况单元格大小为74像素。但是,必须从最终维度中减去2才能解决像素计数中出现的任何整数舍入错误。要以与密度无关的像素(dp)查找最小宽度和高度,请使用以下公式: (细胞数* 74) - 2
相关问题