【问题标题】:Superfluous space in Android widgetAndroid小部件中的多余空间
【发布时间】:2017-06-17 08:31:33
【问题描述】:

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

但是,当我调整大小时,边界完美契合:

我玩过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>

【问题讨论】:

    标签: android android-widget


    【解决方案1】:

    您希望看到什么?它似乎工作正常。

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

    如果您想要不同的东西,请尝试将您的 LinearLayout 的 layout_gravity 值更改为 topbottom 之类的值,或者尝试将您的布局设置为 layout_height="match_parent" 以及类似 background="@color/red" 之类的值(这样空白不再透明)。

    【讨论】:

      猜你喜欢
      • 2020-10-09
      • 2020-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-22
      • 2018-10-03
      • 1970-01-01
      • 2017-07-11
      相关资源
      最近更新 更多