我在查看 GradientColor 的文档 https://developer.android.com/reference/android/R.styleable.html#GradientColor 。我该如何在 XML 中定义渐变色并将其应用到 XML 矢量图形中?我尝试过在 color.xml、styles.xml 和 XML 矢量图形中定义,但是出现了“无法将 @id/gradclor 转换为 ColorStateList”错误。
当使用时出现“无法将#FFFFFFFF#00FFFFFF 145转换为ColorStateList”错误。
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="120dp"
android:height="120dp"
android:viewportWidth="120.0"
android:viewportHeight="120.0">
<path
android:name="play_triangle"
android:pathData="M 30 30 L 30 90 L 80 60 z"
android:strokeColor="@id/gradclor"
android:strokeWidth="5"/>
<color
android:name="@+id/gradclor"
android:startColor="#FFFFFF"
android:endColor="#00FFFF"
android:angle="145"/>
</vector>
当使用时出现“无法将#FFFFFFFF#00FFFFFF 145转换为ColorStateList”错误。
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="120dp"
android:height="120dp"
android:viewportWidth="120.0"
android:viewportHeight="120.0">
<path
android:name="play_triangle"
android:pathData="M 30 30 L 30 90 L 80 60 z"
android:strokeColor="@color/GradientStrokeBorder"
android:strokeWidth="5"/>
</vector>
使用以下颜色.xml文件:
<color name="GradientStrokeBorder">
<item name="android:startColor">#FFFFFF</item>
<item name="android:endColor">#00FFFF</item>
<item name="android:angle">145</item>
</color>
@color/blue_gradient
)),并在res/drawable中放了一个引用常规颜色的版本。 - TTransmitvectorDrawables.useSupportLibrary = true
会将矢量可绘制转换为API 24以下的PNG格式。需要在文件中嵌入梯度,颜色和尺寸而不使用引用。然后您必须使用app:srcCompat
来引用可绘制的对象。对于API 21以下的版本,在您的活动 onCreate 中也需要AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
。https://developer.android.com/guide/topics/graphics/vector-drawable-resources#vector-drawables-backward-solution - TTransmit