【问题标题】:Android - How to change the color of Vector Asset?Android - 如何更改矢量资源的颜色?
【发布时间】:2016-10-18 07:29:39
【问题描述】:

我正在 Android Studio 中导入一个内置的矢量资源,所有这些资源都是黑色的。我正在使用 android:drawableLeft 的按钮上使用 Vector 资源,但我想将 Vector 资源的颜色从黑色更改为白色。 我在这里尝试过解决方案:
Change fill color on vector asset in Android Studio

但是使用android:tint 不起作用(因为我认为它可能适用于按钮本身,而不是按钮的可绘制对象)并且android:drawableTint 也不起作用,它给了我一个渲染错误和一个异常预览窗口本身。
Exception raised during rendering: android.graphics.drawable.VectorDrawable_Delegate.nCreateTreeFromCopy(JJ)J

【问题讨论】:

  • 您可以从drawable文件夹中生成的XML文件中更改颜色。
  • 你在使用support-vector-drawable吗?或者您只想支持 5 个以上的设备(API 21+)?
  • @pskink 不,我只是使用通过右键单击 Drawables > New > Vector Asset 获得的Vector Asset。我应该使用其他东西吗?我认为使用矢量会给我一个优势,即不必为不同的分辨率选择多个图像。如果我错了,请纠正我。我的最低 SDK 版本是 4.2 (17)
  • 所以你必须使用support-vector-drawable,更多阅读:developer.android.com/studio/write/vector-asset-studio.html"""Android 4.4(API 级别 20)及更低版本不支持矢量绘图。如果您的最低要求API 级别设置为这些 API 级别之一,使用 Vector Asset Studio 时有两种选择:生成可移植网络图形 (PNG) 文件(默认)或使用支持库。"""

标签: android button vector colors


【解决方案1】:

首先,如果你在 drawableLeft、drawableRigth 等上使用矢量,矢量会导致你的应用程序在棒棒糖之前的设备上崩溃。 你可以使用这个:https://github.com/bsobe/vectorview

此外,您可以手动更改矢量资产 xml 中的十六进制颜色。

【讨论】:

  • 矢量可以在带有app:srcCompat 属性的棒棒糖前使用。 android-developers.blogspot.in/2016/02/…
  • 我说的是 android:drawableLeft 属性。
  • 完全不需要自定义TextViews,直接调用setCompoundDrawables即可
  • 你确定调用 setCompoundDrawables 就足以在 android:drawable left 上为棒棒糖之前的设备使用矢量了吗?您是否尝试过使用棒棒糖之前的设备?
  • 你可以用任何你想要的Drawable调用setCompoundDrawablesVectorDrawable扩展Drawable所以你可以在那个方法中使用它