小工具minHeight ="72dp"给出2行高度

Ric*_*ier 11 android android-widget

我正在创建一个除了显示一些静态信息之外什么都不做的基本小部件(这是我的教程演示练习).

我的widget提供程序XML看起来像:

<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
    android:initialKeyguardLayout="@layout/widget"
    android:initialLayout="@layout/widget"
    android:minHeight="72dp"
    android:minWidth="294dp"
    android:updatePeriodMillis="60000" >

    <!-- NOTE 1: -->
    <!-- Widget sizing is done in terms of "blocks" on the screen. -->
    <!-- Each block is 74dp square. -->

    <!-- NOTE 2: -->
    <!-- OLD & WRONG FORMULA used to be: size = (n*74) - 2 -->

    <!-- NOTE 3: -->
    <!-- NEW FORMULA has been UPDATED: size = (n*70) - 30 -->
    <!-- Based on new formula, the size should be 40dp. -->

</appwidget-provider>
Run Code Online (Sandbox Code Playgroud)

我想要一个4x1的小部件.即1排高.

按照我在很多帖子中看到的公式,高度=(行x 74)-2,我得到一个72dp的minHeight数字,它应该为我提供1行/块的小部件高度.

安装在4.1.1上给了我一个4x2的小部件.


接下来,我想也许我的布局强迫小部件比预期更大.所以我从布局文件中删除了所有内容:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

仍然是4x2 - 2块高.

Ric*_*ier 17

正确使用的高度(1行/块)是:

android:minHeight="40dp"
Run Code Online (Sandbox Code Playgroud)

同样,正确的宽度(对于4列/块)是:

android:minWidth="250dp"
Run Code Online (Sandbox Code Playgroud)

我找到了基于这三个问题的答案(我应该先检查一下......)


原因在于Artiom Chilaru在这个答案中

  • 公式已更改为size =(n*70) - 30

他提供了App Widget设计指南的链接.