【问题标题】:set vector drawable to side drawable in textview in android在android的textview中将vector drawable设置为side drawable
【发布时间】:2017-02-05 08:14:46
【问题描述】:

我有一个矢量可绘制对象,我想将其设置为 textview 侧面可绘制对象。经过一些谷歌搜索后,一些人建议将我的矢量 drawable 放在 layerList 中,然后将 layer list drawable 设置为 textview drawables,现在我的代码是:

层列表:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
           <item android:drawable="@drawable/ic_sort_up"/>    //vector drawable
</layer-list> 

在java中获取可绘制:

 Drawable ArrowDrawable = AppCompatResources.getDrawable(this, R.drawable.selected_arrow);     

当我在 android 6 设备上运行我的代码时,它运行良好,但是当我在 android 4.4 上运行它时,我收到以下错误消息:

 android.content.res.Resources$NotFoundException: File res/drawable/selected_arrow.xml from drawable resource ID #0x7f0200c1

有人可以帮忙解决这个问题吗?
更新
我的问题是不要在低于 android 5 的情况下使用矢量可绘制对象,因为我现在将它们与 appcompatImageviews 一起使用并且工作正常我的问题是获取矢量可绘制对象并将它们设置为 java 中的 textview 可绘制对象,因此this 链接对我没有帮助。

【问题讨论】:

  • 我的 minSdk 版本是 15
  • this answer 有帮助吗?

标签: java android vector


【解决方案1】:

感谢您的关注,但 this question 不要帮助我。
但经过一番谷歌搜索后,我发现了关于矢量可绘制的,我必须添加这一行

 static {
    AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
}       

我的活动,现在我的应用程序运行良好

【讨论】:

  • 中型博客链接已损坏
【解决方案2】:

在android的textview中将vector drawable设置为side drawable

AppCompatTextView 现在支持 app:drawableLeftCompatapp:drawableTopCompatapp:drawableRightCompatapp:drawableBottomCompatapp:drawableStartCompatapp:drawableEndCompat 复合可绘制对象,支持向后移植的可绘制对象类型,例如 VectorDrawableCompat。

将其包含在您的 gradle 文件中

implementation 'androidx.appcompat:appcompat:1.1.0-beta01'
implementation 'androidx.appcompat:appcompat-resources:1.1.0-beta01'

您可以在文本视图中使用

app:drawableLeftCompat
app:drawableStartCompat

【讨论】:

  • 这仍然是测试版......并且打破了recyclerview。令人惊讶的是,谷歌还没有解决这个问题!
最近更新 更多