我的应用程序小部件显示图像,并且我想在图像上显示一些文本,因此我使用Framelayout和边距对所有内容进行布局。当我在不同设备上检查小部件时,我注意到每个设备为1x1小部件,2x1小部件等提供的空间略有不同。因此1x1小部件将被裁剪,或者将不适用于所有设备上的所有1x1尺寸。 由于使用remoteview的可能性非常有限,因此我无法自动调整文本大小或使用其他技巧将所有内容“缩放”到最大可能区域,但仍然保留宽高比。
我已经在这个主题上进行了搜索,但是没有找到关于如何在设备上以1x1的空间最适合您的小部件的设计指南。
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mainLayout"
android:layout_width="81dp"
android:layout_height="90dp"
android:layout_gravity="center"
android:padding="@dimen/widget_margin">
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/ic_size_1_1"
android:scaleType="fitCenter"/>
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:text="text"
android:textColor="#DFDF30"
android:textSize="8sp"
android:textStyle="bold"
android:layout_marginTop="3dp"
android:layout_marginRight="10dp"
android:layout_marginEnd="10dp"
android:maxLines="1"
/>
</FrameLayout>
如果查看配置文件,则1x1小部件的最小宽度为40x40dp。任何较大的尺寸都将创建2x1小部件。但是这个数字对于布局文件来说太小了。典型的1x1尺寸约为80x90dp。这很令人困惑。
<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:minWidth="40dp"
android:minHeight="40dp"
android:previewImage="@drawable/example_appwidget_preview"
android:resizeMode="horizontal|vertical"
android:updatePeriodMillis="0"
android:widgetCategory="home_screen|keyguard"></appwidget-provider>