Android小部件中的多余空间

时间:2017-06-16 21:54:16

标签: android android-widget

在开发Android主屏幕小部件时,我遇到了一个奇怪的问题,即小部件边界扩展到小部件布局本身之外。你可以在下面的截图中看到我的意思:

enter image description here

但是,当我调整大小时,边界非常合适:

enter image description here

我玩过minWidthminHeight值,但这没有任何效果。这是小部件的布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">
    <TextView
        android:id="@+id/header_remember"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/colorHeaderBlue"
        android:paddingTop="@dimen/cardview_side_padding"
        android:paddingBottom="@dimen/cardview_side_padding"
        android:paddingStart="22dp"
        android:paddingEnd="22dp"
        android:textStyle="italic"
        android:textColor="@color/textColorSecondary"
        android:textSize="22sp"
        android:text="@string/remember_header"
        />

    <RelativeLayout
        android:id="@+id/widget_remember_words"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/colorSearchSuggestionsList">
        <TextView
            android:id="@+id/text_remember"
            android:text="test"
            android:textColor="@color/textColorPrimary"
            android:textSize="24sp"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="@dimen/cardview_side_padding"
            android:layout_marginBottom="@dimen/cardview_side_padding"
            android:layout_marginStart="24dp"
            android:layout_marginEnd="24dp"
            />

        <TextView
            android:id="@+id/text_remember_yes"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/yes"
            android:layout_marginEnd="14dp"
            android:layout_marginStart="14dp"
            android:paddingStart="10dp"
            android:paddingEnd="10dp"
            android:paddingBottom="14dp"
            android:textAllCaps="true"
            android:textSize="16sp"
            android:textStyle="bold"
            android:layout_alignParentEnd="true"
            android:layout_below="@id/text_remember"
            android:textColor="@color/colorHeaderBlue"
            />

        <TextView
            android:id="@+id/text_remember_no"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/no"
            android:textAllCaps="true"
            android:textSize="16sp"
            android:layout_marginStart="14dp"
            android:paddingStart="10dp"
            android:paddingEnd="10dp"
            android:paddingBottom="14dp"
            android:textStyle="bold"
            android:textColor="@android:color/darker_gray"
            android:layout_toStartOf="@id/text_remember_yes"
            android:layout_below="@id/text_remember"
            android:layout_marginEnd="14dp"
            />
    </RelativeLayout>

    <RelativeLayout
        android:id="@+id/widget_remember_no_words"
        android:layout_width="match_parent"
        android:visibility="gone"
        android:background="@color/colorSearchSuggestionsList"
        android:layout_height="wrap_content">
        <TextView
            android:id="@+id/text_no_words"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="@string/no_words_available"
            android:gravity="center"
            android:layout_marginTop="10dp"
            android:textSize="20sp"
            android:textColor="@color/textColorHint"
            />

        <TextView
            android:id="@+id/text_remember_reload"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="10dp"
            android:textSize="16sp"
            android:gravity="center"
            android:text="@string/try_again"
            android:layout_below="@id/text_no_words"
            android:textColor="@color/textColorHint"
            />
    </RelativeLayout>
</LinearLayout>

xml文件夹中的配置文件:

<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
    android:previewImage="@drawable/widget_preview"
    android:initialLayout="@layout/appwidget_remember"
    android:resizeMode="horizontal|vertical"
    android:widgetCategory="home_screen">
</appwidget-provider>

1 个答案:

答案 0 :(得分:0)

你期待看到什么?它似乎工作正常。

如果窗口小部件内容的大小小于外部边界,则未占用的空间只是透明的。这是设计的。您的根容器没有layout_gravity属性,因此它默认居中(垂直)。

如果您想要不同的内容,请尝试更改LinearLayout的layout_gravity值(类似于topbottom),或尝试将布局设置为layout_height="match_parent"以及某些内容像background="@color/red"一样(这样空白区就不再透明了)。