Как подогнать AppWidget под размер пользовательской сетки 1x1 - PullRequest
0 голосов
/ 31 мая 2019

Мой виджет приложения показывает изображение, и я хочу показать текст поверх изображения, поэтому я размечаю все, используя Framelayout и поля.Когда я проверяю виджет на разных устройствах, я замечаю, что каждое устройство дает немного различное пространство для виджета 1x1, виджета 2x1 и т. Д. Таким образом, виджет 1x1 будет обрезан или не будет иметь наибольшее соответствие для всех размеров 1x1 на всех устройствах.,Поскольку возможности удаленного просмотра очень ограничены, я не могу автоматически подгонять размеры текста или использовать другие приемы, чтобы «масштабировать» все до максимально возможной области, но все еще оставаясь пропорциями.

Я гуглил эту тему, но не нашел дизайнаруководство о том, как наилучшим образом подогнать ваш виджет для 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 имеет minWidth 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>
...