Android 为什么我的主屏幕小部件占用两行而不是一行?
所以我阅读了小部件的大小并创建了一个250dpX72dp小部件,希望它每行占用4列。在我的2.2设备上,它确实如预期的那样显示,但在我的4.2设备上,它突然占用了4x2 我认为每个单元格的大小计算为(单元格*74)-2 小部件定义如下:Android 为什么我的主屏幕小部件占用两行而不是一行?,android,android-widget,Android,Android Widget,所以我阅读了小部件的大小并创建了一个250dpX72dp小部件,希望它每行占用4列。在我的2.2设备上,它确实如预期的那样显示,但在我的4.2设备上,它突然占用了4x2 我认为每个单元格的大小计算为(单元格*74)-2 小部件定义如下: <?xml version="1.0" encoding="utf-8"?> <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:initialLayout="@layout/widget"
android:minHeight="72dp"
android:minWidth="250dp"
/>
看看:
因此,似乎72dp映射到2个单元格。考虑到Stackoverflow的多个问题,我并不是唯一一个感到困惑的人 谷歌似乎确实改变了小部件大小的计算方式——相当引人注目
您需要从API 11开始应用不同的公式;根据its(70*n)-30;这意味着您应该将最小高度设置为40。您可以在不同的资源文件夹中为高度创建两个资源(分别是
values
和values-v11
),这样您可以根据values/.xml
中的旧公式指定高度,并根据values-v11/.xml
中的新公式指定高度
请注意,您还应考虑API 15以上的利润率,这是以类似的方式完成的:
不过,在较新的设备上,大小调整似乎仍然有一个怪癖,250dp将占用3列而不是4列
另请参见这在android版本中是否发生了变化?小部件将在主屏幕上占用一定数量的单元格。单元格通常用于显示一个应用程序的图标。作为计算规则,您应该使用以下公式定义小部件的大小:((列/行数)*74)-2。这些是独立于设备的像素,-2用于避免舍入问题。另外,我的老款安卓设备只显示了一行,我猜是由于蜂巢和ICS+允许调整主屏幕小部件的大小,谷歌做出了改变。如果你的目标是SDK 14,根据我的链接,他们会自己增加少量的利润。@user1993392 Vogella的文章已经过时了。因为ICS是(70*n)-30,所以新的公式你确定你应该考虑API 15的利润,不是API 14吗?另外,你需要从API 14开始应用不同的公式,而不是从API 11开始。蜂窝状原料药(11、12和13)使用原始配方(74 x n)-2