在开发Android主屏幕小部件时,我遇到了一个奇怪的问题,即小部件边界扩展到小部件布局本身之外。你可以在下面的截图中看到我的意思:
但是,当我调整大小时,边界非常合适:
我玩过minWidth
和minHeight
值,但这没有任何效果。这是小部件的布局:
<?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>
答案 0 :(得分:0)
你期待看到什么?它似乎工作正常。
如果窗口小部件内容的大小小于外部边界,则未占用的空间只是透明的。这是设计的。您的根容器没有layout_gravity
属性,因此它默认居中(垂直)。
如果您想要不同的内容,请尝试更改LinearLayout的layout_gravity
值(类似于top
或bottom
),或尝试将布局设置为layout_height="match_parent"
以及某些内容像background="@color/red"
一样(这样空白区就不再透明了)。