android - 对低于 API 19 的矢量可绘制对象的 RTL 支持

标签 android right-to-left android-vectordrawable

我有一个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/

相关文章:

android - 如何以类似流体的方式为 VectorDrawable 设置动画?

android - 如何通过代码将SoundPool静音?

java - 如何以编程方式检查 AutoStart 权限是在 android studio 上启用还是禁用

xml - Android Studio XML 上的 RTL 预览

ios - UILabel 不适用于从右到左的 NSAttributedString + NSParagraphStyle

java - Java 中 Canvas.drawText 从右到左

android - 渲染问题异常 android.graphics.drawable

android - 如何在不缩放的情况下将可绘制的矢量在图层列表中居中

java - 在 Android 中使用广播

android - 存储 session ID 的推荐方法是什么