平板电脑上的 AppWidget 问题

AppWidget issue on tablets

我设计了一个 appwidget,它应该占用 4 个单元格的宽度和 1 个单元格的高度。

基于 docs 这应该是一个 4x1 应用小部件:

<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:minWidth="250dp"
android:minHeight="40dp"
android:updatePeriodMillis="90000000"
android:previewImage="@drawable/widgetlayout_2"
android:initialLayout="@layout/main" >
</appwidget-provider>

注意:@layout/main有宽高match_parent。它与 appwidget 的大小无关,这就是为什么我不 post mainXML-code

Everythink 在手机上运行良好,可能是因为在主屏幕上无法旋转它们。

但在平板电脑上(使用 Nexus 10 XHDPI 2560x1600 API16 测试)appWidget 仅使用 3x1 测量!

堆栈上有一个类似的 question 没有答案。也许有人得到了更新。

下一个问题是,在横向上,我对 appwidget 的设计符合预期。但是在纵向中,我的appWidget在主屏幕上缩小了,布局乱了?有人知道如何防止这种情况吗,我唯一的方法是在我的项目中定义一个 layout-xlarge-port 文件夹,并在其中放置一个自定义的端口模式平板电脑布局?

感谢任何帮助!

为了制作 4x1 单元格小部件,您需要指定 minWidthminHeight 使用以下公式:

dpSize = (number of cells * 74) – 2

所以数学上应该是:

android:minWidth="294dp"
android:minHeight="72dp"

这些尺寸会将小部件的默认安装设置为 4x1 单元格配置。在平板电脑(可能有超过 4 个水平单元格)上安装您的小部件也将遵循与手机中显示的相同尺寸。

关于您的第二个问题,您可以定义以下内容来限制您的小部件的最小可调整大小的宽度和高度:

//for example this will set the minimum allowed re-size of 2x2 cells
android:minResizeWidth="146dp"
android:minResizeHeight="146dp"
android:resizeMode="horizontal|vertical"

我认为最好不要定义小部件的单元格分布超过 4x4 个单元格,因为这种划分很容易适合手机和平板电脑并让用户重新调整大小.但是,如果您希望平板电脑有更大的单元格划分,那么我建议您根据设备屏幕密度在文件夹中定义多个 appwidget-provider 和自定义单元格配置。例如:

res
|-xml          //for ordinary screens, like phones and phablets
|-xml-w820dp   //for devices with minimum with of 820dp, like hi-res tablets and etc.