1

I have following in my app:

// Config
defaultConfig {
    vectorDrawables.useSupportLibrary = true
}

// Activity
public abstract class BaseActivity<T extends ViewDataBinding> extends AppCompatActivity {
    static {
        AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
    }
}

// XML; Location: res/drawable
<Button
    android:id="@+id/btAdd"
    android:onClick="onClick"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:drawableLeft="@drawable/ic_add_black_24dp"
    android:padding="8dp"
    android:text="@string/add"
    android:textColor="@color/md_black_1000"
    app:backgroundTint="@color/md_white_1000"/>

Still I get following exception on devices running android API < 21:

Caused by: android.content.res.Resources$NotFoundException: File res/drawable/ic_add_black_24dp.xml from drawable resource ID #0x7f070070

This is a vector drawable. I thought above two statements will have the effect, that vector drawables are converted to pngs for devices running android API < 21.

What I do:

  • enable vectorDrawables.useSupportLibrary
  • call AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
  • make sure the vector drawables are not located under res/drawables-any but res/drawables
  • use app:srcCompat for ImageViews instead of app:src => not relevant for my issue, as I am using android:drawableLeft
  • I use target API 26 + support library version 26.1.0

What am I still missing?

prom85
  • 16,896
  • 17
  • 122
  • 242

0 Answers0