Android VectorDrawable作为复合抽屉

Mat*_*teo 4 android android-support-library android-vectordrawable

由于通过陈述这个Android开发者博客文章中,我们现在可以使用VectorDrawables在Android API 7+使用AppCompat 23.2.0及更高版本.

除了使用drawables作为TextView的复合物之外,一切似乎都适合我.

通常,人们可以这样做:

            customTab.setCompoundDrawablesWithIntrinsicBounds(
                0,
                R.drawable.my_vector,
                0,
                0
            );
Run Code Online (Sandbox Code Playgroud)

不幸的是,目前还没有工作,我无法找到解决此问题的方法.

正如帖子所述,唯一可用和有效的方法是xml,使用app:srcCompat="@drawable/..."和JavasetImageResource(...)

如何在setCompoundDrawable()方法中使用新的矢量drawable支持?

提前致谢.

编辑:

根据要求,这是VectorDrawableCompat课程的结果:

探索标签

xml是:

<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="24dp"
    android:height="24dp"
    android:viewportWidth="98"
    android:viewportHeight="102">

<path
    android:fillColor="#4D4D4D"
    android:strokeWidth="2"
    android:strokeColor="#4D4D4D"
    android:pathData="M63.3336386,72.2631001 C56.7778507,76.9021242
48.7563953,79.6307404
40.09319,79.6307404 C17.9503315,79.6307404 0,61.804793 0,39.8153702
C0,17.8259473 17.9503315,0 40.09319,0 C62.2360484,0 80.1863799,17.8259473
80.1863799,39.8153702 C80.1863799,50.8100816 75.6987973,60.7639242
68.4433567,67.9690887 L96.7320074,96.0617174 C98.0293966,97.3501165
97.9978616,99.4159703 96.6953405,100.709466 C95.3837385,102.011979
93.2974318,102.019264 92.0151615,100.745879 L63.3336386,72.2631001
L63.3336386,72.2631001 L63.3336386,72.2631001 Z M40.09319,74.9465792
C59.6310061,74.9465792 75.4695341,59.217802 75.4695341,39.8153702
C75.4695341,20.4129383 59.6310061,4.6841612 40.09319,4.6841612
C20.5553738,4.6841612 4.71684588,20.4129383 4.71684588,39.8153702
C4.71684588,59.217802 20.5553738,74.9465792 40.09319,74.9465792
L40.09319,74.9465792 L40.09319,74.9465792 Z" />
</vector>
Run Code Online (Sandbox Code Playgroud)

Pah*_*aha 19

支持库23.2开始,您可以使用下一个解决方案:

Drawable drawable=AppCompatDrawableManager.get().getDrawable(mContext, R.drawable.drawable);
view.setCompoundDrawablesWithIntrinsicBounds(null, drawable, null, null);
Run Code Online (Sandbox Code Playgroud)

  • Android Studio显示此警告:"只能从同一个库组(groupId = com.android.support)中调用AppCompatDrawableManager".我认为替代方案是:[AppCompatResources#getDrawable](https://developer.android.com/reference/android/support/v7/content/res/AppCompatResources.html) (4认同)