В режиме разработки отображаются мои значки. Первый - это значок запуска (векторное изображение), а последний - просто стандартное материальное векторное свойство.
Они хорошо отображаются в виде предварительного просмотра в моей деятельности по настройке. Но не на домашнем экране; Я предполагаю, что это какая-то проблема с путями или разрешениями, которую служба не может решить. Нужно ли что-то, что приводит к @drawable? Если так, что?
Режим дизайна:
По телефону:
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);