平板电脑上的AppWidget问题

时间:2015-01-02 23:35:27

标签: android android-layout android-appwidget

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

基于docs,这应该是一个4x1的appwidget:

<?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的大小无关,这就是为什么我不发布XML-code的{​​{1}}。

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

但是在平板电脑上(使用 Nexus 10 XHDPI 2560x1600 API16 进行测试),main仅以 3x1 进行测量!

堆栈上有类似的question,没有回复。也许有人得到了更新。

下一个问题是,在风景中,我的appwidget设计符合预期。但是在Portrait中,我的appWidget在主屏幕上缩小了,布局搞砸了?有人知道如何防止这种情况,我唯一的方法是在我的项目中定义一个appWidget文件夹,并在那里为端口模式放置平板电脑的自定义布局吗?

感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

要制作 4x1 单元格小部件,您需要使用以下公式指定 minWidth minHeight

  

dpSize =(细胞数* 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.