我设计了一个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
文件夹,并在那里为端口模式放置平板电脑的自定义布局吗?
感谢任何帮助!
答案 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.