Автоматическое зеркалирование для макета RTL не работает в версиях Android ниже 6.0

Как вы знаете, векторные Drawables были добавлены в Android Support Library 23.2, которая объявила в Android Developer Blog, что для всех версий android мы можем использовать его вместо добавления дополнительных значков разных размеров. Однако опция «включить автозаполнение для RTL-макета» не работает в версиях Android ниже 6.0! Есть ли дополнительные настройки для использования в других версиях Android?

Введите описание изображения здесь

Мой тестовый проект использует простой способ изменения локали моего приложения. Это результаты моего теста:

Nexus 6P с Android 6.0, который отлично работает:

Введите описание изображения здесь Введите описание изображения здесь

Nexus 7 с Android 5.0:

Введите описание изображения здесь Введите описание изображения здесь

благодаря

Сообщено об ошибке: ссылка

Flip vector drawable, если локальный арабский, а drawable – авто зеркало

 public static Drawable getDrawableLocale(Activity activity, @DrawableRes int drawableResId) { if (!Util.isRTL() || !ResourcesCompat.getDrawable(activity.getResources(), R.drawable.ic_back_white, null).isAutoMirrored()) return ResourcesCompat.getDrawable(activity.getResources(), R.drawable.ic_back_white, null); /** * Flip it for RTl because Kitkat doesn't flip */ Bitmap bitmap = Util.getBitmapFromVectorDrawable(activity, drawableResId); Matrix matrix = new Matrix(); matrix.preScale(-1.0f, 1.0f); bitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true); return new BitmapDrawable(activity.getResources(), bitmap); } public static Bitmap getBitmapFromVectorDrawable(Context context, int drawableId) { Drawable drawable = getVectorDrawable(context, drawableId); if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { drawable = (DrawableCompat.wrap(drawable)).mutate(); } Bitmap bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(bitmap); drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight()); drawable.draw(canvas); return bitmap; } public static Drawable getVectorDrawable(Context context, @DrawableRes int idVectorDrawable) { return AppCompatDrawableManager.get().getDrawable(context, idVectorDrawable); } public static boolean isRTL() { return isRTL(Locale.getDefault()); } public static boolean isRTL(Locale locale) { final int directionality = Character.getDirectionality(locale.getDisplayName().charAt(0)); return directionality == Character.DIRECTIONALITY_RIGHT_TO_LEFT || directionality == Character.DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC; }