Выравнивание Android — представления с использованием языкового стандарта с ивритом не работает

#android #alignment #locale #hebrew

Вопрос:

Я хочу иметь возможность использовать свое приложение как на английском, так и на иврите. Чтобы правильно выровнять представления, я использую:

 android:layoutDirection="locale"
 

XML, который я использую, это:

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layoutDirection="locale"
android:tag="none">

<ScrollView
    android:id="@ id/svNewMain"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_above="@ id/buttons_header"
    android:layout_alignParentTop="true"
    android:layoutDirection="locale"
    android:background="#FFF" >

    <RelativeLayout
        android:id="@ id/new_main_relative_layout"
        android:clickable="true"
        android:focusableInTouchMode="true"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layoutDirection="locale"
        android:focusable="true">

        <ImageButton
            android:id="@ id/btn_settings"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentEnd="true"
            android:layout_marginTop="20dp"
            android:layout_marginEnd="20dp"
            android:background="@android:color/transparent"
            android:src="@drawable/settings_icon"
            android:contentDescription="@string/settings" />

    </RelativeLayout>

</ScrollView>

</RelativeLayout>
 

Идея состоит в том, что значок настроек будет выровнен по родительскому концу.
В случае английского языка он должен быть выровнен по правому краю.
В случае иврита он должен быть выровнен по левому краю — и это не работает для меня.

У меня в AndroidManifest.xml эта строка для поддержки RTL:

 android:supportsRtl="true"
 

Я также проверил языковой стандарт конфигурации, чтобы убедиться, что это iw:

     String config_locale = getResources().getConfiguration().getLocales().get(0).toString();
    Log.d(TAG,"LOCALE = " config_locale);
 

В журнале регистрации показано: iw

Итак, что я делаю не так? Возможно ли автоматическое выравнивание представлений для обоих языков?

Спасибо!