【发布时间】:2018-10-23 09:30:21
【问题描述】:
我在 xml 中使用了可绘制的矢量选择器,效果很好,但是当 sdk
这是我的 xml 用法:
<android.support.v7.widget.AppCompatTextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawableLeft="@drawable/common_selector_ic_back"/>
common_selecor_ic_back.xml
<selector
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/common_ic_back" />
</selector>
common_ic_back.xml
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportHeight="24.0"
android:viewportWidth="24.0">
<path
android:fillColor="#FFFFFFFF"
android:pathData="M20,11H7.83l5.59,-5.59L12,4l-8,8 8,8 1.41,-1.41L7.83,13H20v-2z"/>
但我想更改代码中的drawableLeft,我尝试了三种解决方案,都失败了。
1
Drawable d1 = getResources().getDrawable(R.drawable.common_selector_ic_back);
崩溃了
android.content.res.Resources$NotFoundException: 文件 res/drawable/common_selector_ic_back.xml 来自可绘制资源 ID
0x7f080065
2
icon2 = AppCompatResources.getDrawable(this, R.drawable.common_selector_ic_back);
同样原因失败
3
VectorDrawableCompat.create(context.getResources(), R.drawable.common_selector_ic_back, context.getTheme());
记录失败
二进制 XML 文件第 2 行标记需要 viewportWidth > 0
有人遇到这个问题吗?你能告诉我如何在硬件代码中获得可绘制的矢量选择器吗?
解决方案:
活动必须是AppCompatActivity
【问题讨论】:
-
你能粘贴一张你的 res 层次结构的图像,特别是 drawable 文件夹吗?
-
请看有问题的图片正文。
-
您不能直接将 Vector 与
一起使用。要解决此问题,请在我的解决方案中使用以下步骤。 -
final Drawable d = getDrawable(context, R.drawable.abc_vector_test);in AppCompatDrawableManager#checkVectorDrawableSetup 返回 true,VectorDrawableCompat 可以创建vector资源,但不能创建selector资源。