我有一个vector
可绘制对象。
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:autoMirrored="true"
android:viewportHeight="24.0"
android:viewportWidth="24.0">
<path
android:fillColor="#65666a"
android:pathData="M8.59,16.34l4.58,-4.59 -4.58,-4.59L10,5.75l6,6 -6,6z" />
</vector>
我添加了 android:autoMirrored="true"
属性来支持 RTL,但它仅用于 API 19 及更高版本。但我的最低 API 级别是 API 17。如何添加向后可比性?任何帮助将不胜感激。
最佳答案
下面是我的做法,而不是使用 autoMirrored
,使用此解决方法来做您自己的“自动镜像”。
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportHeight="24.0"
android:viewportWidth="24.0">
<group
android:pivotX="12"
android:scaleX="@dimen/rtl_automirror_scale">
<path
android:fillColor="#65666a"
android:pathData="M8.59,16.34l4.58,-4.59 -4.58,-4.59L10,5.75l6,6 -6,6z" />
</group>
</vector>
在这里,我删除了 autoMirror 属性,而是将矢量路径包装在 <group>
中带有 pivotX
的标签点 12(即可绘制对象的中间)和一个 scaleX
指向 Dimen 资源。
在您的正常值文件夹中,您可以将资源提供为:
<resources>
<item name="rtl_automirror_scale" format="float" type="dimen">1</item>
</resources>
比例尺的值为 1 表示没有变化,只有普通的可绘制对象。
但是您可以为 RTL
提供备用值资源values-ldrtl
中的设备:
<resources>
<item name="rtl_automirror_scale" format="float" type="dimen">-1</item>
</resources>
值 -1 表示 VectorDrawable
将水平翻转 RTL
设备。
然后每当你有其他VectorDrawables
需要翻转的,只需将它们包裹在上面的组标签中,指向相同的维度即可。
关于android - 对低于 API 19 的矢量可绘制对象的 RTL 支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40201451/