Как заставить AppCompatImageView работать в виджете? - PullRequest
0 голосов
/ 21 мая 2019

Я пытаюсь использовать AppCompatImageView для отображения векторного изображения в виджете, но изображение не отображается (вместо этого я получил сообщение об ошибке "Ошибка загрузки ...").Один и тот же кусок кода хорошо работает в моей основной деятельности (оба в LinearLayout).Есть ли ограничение для виджетов?Что мне не хватает?

Мой minSdkVersion равен 19, и я использую androidx.

Я пытался изменить макет на стандартный LinearLayout.

Мой XML:

<androidx.appcompat.widget.LinearLayoutCompat
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/widget_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/colorPrimaryDark"
    android:orientation="vertical">

    <androidx.appcompat.widget.AppCompatImageView
        android:id="@+id/appwidget_image"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:contentDescription="@+id/appwidget_label"
        android:padding="5dp"
        app:srcCompat="@drawable/ic_baseline_toggle_off_24px"
        android:tint="@color/colorAccent"/>

    <TextView
        android:id="@+id/appwidget_label"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ellipsize="end"
        android:gravity="center_horizontal"
        android:paddingLeft="2dp"
        android:paddingRight="2dp"
        android:singleLine="true"
        android:text="@string/appwidget_default_text"
        android:textAlignment="gravity"
        android:textColor="@color/colorAccent"
        android:textSize="12sp" />

</androidx.appcompat.widget.LinearLayoutCompat>

Извлечение моего build.gradle:

android {
    compileSdkVersion 28
    defaultConfig {
        vectorDrawables.useSupportLibrary = true
    }
}

dependencies {
    implementation 'androidx.appcompat:appcompat:1.1.0-alpha05'
    implementation 'androidx.appcompat:appcompat-resources:1.1.0-alpha05'
    implementation 'androidx.legacy:legacy-support-v4:1.0.0'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    implementation 'androidx.legacy:legacy-support-v4:1.0.0'
    implementation 'androidx.vectordrawable:vectordrawable:1.0.1'
    implementation 'com.loopj.android:android-async-http:1.4.9'
    implementation 'com.squareup.okhttp3:okhttp:3.10.0'
    implementation 'de.greenrobot:eventbus:2.4.0'
    implementation 'com.j256.ormlite:ormlite-android:4.48'
    implementation 'androidx.work:work-runtime:2.0.1'
}

Некоторые сообщения в logcat, которых я не понимаю (но не обязательно связанные с моей проблемой):

05-21 19:38:09.886 12404-12404/com.yadoms.widgets.statedisplay E/dalvikvm: Could not find class 'android.graphics.drawable.RippleDrawable', referenced from method androidx.appcompat.widget.AppCompatImageHelper.hasOverlappingRendering
05-21 19:38:09.886 12404-12404/com.yadoms.widgets.statedisplay W/dalvikvm: VFY: unable to resolve instanceof 216 (Landroid/graphics/drawable/RippleDrawable;) in Landroidx/appcompat/widget/AppCompatImageHelper;

05-21 19:38:09.906 12404-12404/com.yadoms.widgets.statedisplay E/dalvikvm: Could not find class 'android.view.textclassifier.TextClassificationManager', referenced from method androidx.appcompat.widget.AppCompatTextClassifierHelper.getTextClassifier

05-21 19:38:10.066 12404-12404/com.yadoms.widgets.statedisplay E/EGL_emulation: tid 12404: eglSurfaceAttrib(1199): error 0x3009 (EGL_BAD_MATCH)

Спасибоза вашу помощь

1 Ответ

1 голос
/ 21 мая 2019

Есть ли ограничение для виджетов?

Да. Вы ограничены списком виджетов , перечисленным в документации .

В частности, вы не можете использовать какие-либо пользовательские виджеты, как свои, так и из библиотек (например, AndroidX). Это потому, что ваше приложение не отображает виджет приложения & mdash; домашний экран.

...