Android: Виджет: «Встроенные / предопределенные» изображения отсутствуют? - PullRequest
0 голосов
/ 04 июля 2019

В режиме разработки отображаются мои значки. Первый - это значок запуска (векторное изображение), а последний - просто стандартное материальное векторное свойство.

Они хорошо отображаются в виде предварительного просмотра в моей деятельности по настройке. Но не на домашнем экране; Я предполагаю, что это какая-то проблема с путями или разрешениями, которую служба не может решить. Нужно ли что-то, что приводит к @drawable? Если так, что?

Режим дизайна:

enter image description here

По телефону:

enter image description here

Manifest:

<receiver android:name=".widget.ProgressWidgetProvider">
    <intent-filter>
        <action android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
    </intent-filter>

    <meta-data
        android:name="android.appwidget.provider"
        android:resource="@xml/app_widget_provider_info" />
</receiver>

app_widget_provider_info.xml

<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
    android:minWidth="240dp"
    android:layout_height="20dp"
    android:updatePeriodMillis="86400000"
    android:initialLayout="@layout/widget_progress"
    android:resizeMode="horizontal"
    android:widgetCategory="home_screen"       
    android:configure="com.gumonshoe.granger.widget.ProgressWidgetSettings" />

XML для виджета:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="70dp"
    android:background="@color/grangerGray"
    android:gravity="center_vertical"
    android:orientation="horizontal">

    <ImageView
        android:id="@+id/wdgIconClickable"
        android:layout_width="30dp"
        android:layout_height="50dp"
        android:layout_weight="1"
        android:background="@color/grangerGray"
        android:clickable="true"
        app:srcCompat="@drawable/ic_launcher_foreground" />

    <LinearLayout
        android:id="@+id/weight"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="10"
        android:gravity="center"
        android:orientation="vertical">

        <TextView
            android:id="@+id/wdgProgTarget"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="8"
            android:paddingBottom="4dp"
            android:text="TextView"
            android:textAlignment="center" />

        <ProgressBar
            android:id="@+id/wdgProgressBar"
            style="?android:attr/progressBarStyleHorizontal"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:paddingLeft="8dp"
            android:progressDrawable="@drawable/granger_progress_light" />

        <TextView
            android:id="@+id/wdgWordCount"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:paddingTop="4dp"
            android:text="5000/6546"
            android:textAlignment="center" />

    </LinearLayout>

    <ImageButton
        android:id="@+id/wdgBtnLogToTarget"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:backgroundTint="@color/grangerBlue"
        android:paddingVertical="20dp"
        android:tint="@color/grangerYellow"
        app:srcCompat="@drawable/ic_time_log_black_24dp" />

</LinearLayout>

Запрошенные данные из комментариев

compileSdkVersion 28, minSdkVersion 28, targetSdkVersion 28; vectorDrawables.useSupportLibrary отсутствует в градле, но опять-таки векторы отображаются в самом приложении, а не в виджете на домашнем экране.

Обойти

Выполнение этого в java во время обновления устраняет проблему, но мне не нужно было запускать код для правильной установки ресурса.

views.setInt(R.id.wdgBtnLogToTarget, "setImageResource", R.drawable.ic_stat_name);
views.setInt(R.id.wdgIconClickable, "setImageResource", R.drawable.ic_launcher_foreground);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...