RTL支持以下API 19的矢量绘图

时间:2016-10-23 09:28:20

标签: android right-to-left android-vectordrawable

我有一个db.Badges.aggregate([ { $match: otherMatchConditions }, { $group: { _id: '$badgeId', date: { $min: '$date' }, mistakes: { $min: '$mistakes' } } } ]) drawable。

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> 属性来支持RTL,但它仅用于API 19及更高版本。但我的最低API级别是API 17.如何添加后向可比性?任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:12)

以下是我将如何操作,而不是使用autoMirrored,使用此解决方法来执行自己的&#34;自动镜像&#34;。

<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(即可绘制的中间)和{{ 1}}指向Dimen资源。

在普通值文件夹中,您将资源提供为:

scaleX

比例的值为1表示没有变化,只是正常的可绘制。

但是,您可以在<resources> <item name="rtl_automirror_scale" format="float" type="dimen">1</item> </resources> 中为RTL设备提供备用值资源:

values-ldrtl

值为-1表示<resources> <item name="rtl_automirror_scale" format="float" type="dimen">-1</item> </resources> 设备将水平翻转VectorDrawable

然后每当你需要翻转其他RTL时,只需将它们包装在上面的组标签中,指向相同的维度。

答案 1 :(得分:1)

在我的imageview中添加了

android:scaleX="@integer/local_mirror_scale_x"

然后在值

的integers.xml中

英文整数

<integer name="local_mirror_scale_x">1</integer>

in arabic integers

<integer name="local_mirror_scale_x">-1</integer>