1

我正在设计一个 AppWidget,我遇到了这样的问题:我在 xml 中定义

android:minWidth ="296dp"
android:minHeight="146dp"

这意味着我的小部件的 4x2 单元格大小。
在我的程序代码中,我通过在画布上绘制文本和图形来创建自定义视图。为了正确缩放我的自定义视图,我必须知道我的 appwidget 在主屏幕上的位置的边界尺寸。我找不到任何有用的信息来确定主屏幕上的实际 appwidget 大小(所有资源都告诉过 - “你不能!” - 真的是这样吗?)所以我使用android:minWidthand估计了我的 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 大小?我会非常感谢你的帮助。

4

1 回答 1

0

我认为这是不可能的——我的应用小部件也有同样的问题。相反,您可以创建不同版本的应用小部件(即 1x4、2x3 等),但我知道这不是您真正想要的。在应用程序小部件中完成的缩放,例如 TextView 内的文本(即使使用 sp)似乎超出了我们在 appwidgets 中的控制范围。

于 2014-09-28T09:15:13.823 回答