平板电脑上的 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 main
的 XML-code
。
Everythink 在手机上运行良好,可能是因为在主屏幕上无法旋转它们。
但在平板电脑上(使用 Nexus 10 XHDPI 2560x1600 API16 测试)appWidget
仅使用 3x1 测量!
堆栈上有一个类似的 question 没有答案。也许有人得到了更新。
下一个问题是,在横向上,我对 appwidget 的设计符合预期。但是在纵向中,我的appWidget
在主屏幕上缩小了,布局乱了?有人知道如何防止这种情况吗,我唯一的方法是在我的项目中定义一个 layout-xlarge-port
文件夹,并在其中放置一个自定义的端口模式平板电脑布局?
感谢任何帮助!
为了制作 4x1 单元格小部件,您需要指定 minWidth 和 minHeight 使用以下公式:
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.
我设计了一个 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 main
的 XML-code
。
Everythink 在手机上运行良好,可能是因为在主屏幕上无法旋转它们。
但在平板电脑上(使用 Nexus 10 XHDPI 2560x1600 API16 测试)appWidget
仅使用 3x1 测量!
堆栈上有一个类似的 question 没有答案。也许有人得到了更新。
下一个问题是,在横向上,我对 appwidget 的设计符合预期。但是在纵向中,我的appWidget
在主屏幕上缩小了,布局乱了?有人知道如何防止这种情况吗,我唯一的方法是在我的项目中定义一个 layout-xlarge-port
文件夹,并在其中放置一个自定义的端口模式平板电脑布局?
感谢任何帮助!
为了制作 4x1 单元格小部件,您需要指定 minWidth 和 minHeight 使用以下公式:
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.