【问题标题】:Why does my homescreen widget take two rows instead of one?为什么我的主屏幕小部件占用两行而不是一行?
【发布时间】:2013-03-28 19:07:39
【问题描述】:

所以我阅读了小部件尺寸并创建了一个 250dpX72dp 小部件,希望它占据 4 列一行。在我的 2.2 设备上它确实按预期显示,但在我的 4.2 设备上它突然占用了 4x2。

我认为每个单元格的大小计算为 (cells * 74) - 2。

小部件定义如下:

 <?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"
   />

【问题讨论】:

    标签: android android-widget


    【解决方案1】:

    您需要从 API 11 开始应用不同的公式;根据documentation 其 (70 * n) - 30;所以这意味着您应该将 minHeight 设置为 40。您可以在不同的资源文件夹中为高度创建两个资源(分别为 valuesvalues-v11),这样您就可以根据 @ 中的旧公式指定高度987654326@和values-v11/&lt;insert fancy name here&gt;.xml中新公式的高度

    请注意,您还应该考虑 API 15 以上的边距,这以类似的方式完成:http://developer.android.com/guide/topics/appwidgets/index.html#CreatingLayout

    不过,在较新的设备上,大小调整似乎仍然存在一个怪癖,其中 250dp 需要 3 列而不是 4 列。

    另见Appwidget size calculation

    【讨论】:

    • 您确定应该考虑 API 15 的边距,不是 API 14 吗?
    • 另外,您需要从 API 14 开始应用不同的公式,而不是 11。Honeycomb API(11、12 和 13)使用原始公式,(74 x n) - 2
    【解决方案2】:

    【讨论】:

    • 这在安卓版本中是否有所改变? vogella.com/articles/AndroidWidgets/article.html#overview_size Widget 会在主屏幕上占据一定数量的单元格。单元格通常用于显示一个应用程序的图标。作为计算规则,您应该使用以下公式定义小部件的大小:((列数/行数)* 74) - 2。这些是与设备无关的像素,-2 用于避免舍入问题。此外,我的旧 Android 设备确实会在一行中显示它。
    • 我的猜测是,使用 Honeycomb 和 ICS+ 允许可调整大小的主屏幕小部件 Google 进行了更改。如果您的目标是 SDK 14,根据我的链接,他们会自行增加少量利润。
    • @user1993392 Vogella 的文章已过时。自 ICS 以来的新公式是 (70 * n) - 30
    【解决方案3】:

    考虑到 Stackoverflow 上的多个问题,我并不孤单。

    Google 似乎确实改变了 - 非常显着 - 小部件大小的计算。

    How to make 4x1 size widget on Android homescreen?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-28
      • 1970-01-01
      相关资源
      最近更新 更多