我正在设计一个 AppWidget,我遇到了这样的问题:我在 xml 中定义
android:minWidth ="296dp"
android:minHeight="146dp"
这意味着我的小部件的 4x2 单元格大小。
在我的程序代码中,我通过在画布上绘制文本和图形来创建自定义视图。为了正确缩放我的自定义视图,我必须知道我的 appwidget 在主屏幕上的位置的边界尺寸。我找不到任何有用的信息来确定主屏幕上的实际 appwidget 大小(所有资源都告诉过 - “你不能!” - 真的是这样吗?)所以我使用android:minWidth
and估计了我的 appwidget 大小android:minHeight="146dp"
。
问题是我无法在我用于测试的所有设备上正确显示我的小部件,尤其是与平板电脑有关的设备。
我已经阅读了https://developer.android.com/guide/practices/ui_guidelines/widget_design.html和其他官方文档,但我无法得出正确的结论。
1 - 我找到了两个公式来确定一个单元格的大小:
1)minWidth or minHeight = 70 * n - 30 and
2)minWidth or minHeight = 74 * n - 2
我使用了第二个并确定它非常适用于普通手机(不适用于三星 Galaxy Tab),但官方提供使用第一个。如果我在手机上使用第一个它也可以工作,但是我有一个较小的小部件组件(大小小部件组件 - 我在画布上绘制的文本、矩形等),因此 appwidget 的外观比第二个更差案子。
在平板电脑的情况下,我的自定义视图的右侧/左侧有一个空白区域,并且考虑到我的小部件布局(我有自定义小部件和两个按钮),它看起来很糟糕。我认为平板电脑上出现空白是因为 appwidget 的实际宽度和估计宽度不匹配。
如何计算在平板电脑上看起来合适的尺寸小部件?
2 - 我无法使用 9-patch 资源,因为我以编程方式创建视图。我尝试在布局小部件中使用 android:scaleType
<ImageView
android:id="@+id/custom_view"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:adjustViewBounds="true"
android:scaleType="fitXY"
android:clickable="true"
android:contentDescription="@string/image_description" />
但是,例如,在摩托罗拉 Xoom 中,我的 appwidget 在拉伸自定义视图后的外观很糟糕。
3 - 我发现 Android 设备本身会调整小部件的大小,但我无法安静地理解这种调整大小的逻辑。
毕竟,在我的情况下,如何为手机和平板电脑设计 appwidget 大小?我会非常感谢你的帮助。