android:gravity="start" в RTL выравнивает текст слева направо

При тестировании моего макета на устройстве с языком RTL (арабский) я обнаружил, что TextView с гравитацией:start продолжает выравнивание текста по левому краю, а не по правому! Я пробовал android:textAlignment="viewStart", и он работает правильно, но из-за требований API я не зависел от этого.

мой код (я имею в виду первое текстовое представление в моем коде):

<LinearLayout
android:orientation="horizontal"
android:gravity="center_vertical"
>

<TextView
    android:text="Size"
    android:gravity="start"
    android:layout_weight="1"
    android:layout_width="0dp"
    android:layout_height="wrap_content"/>

<LinearLayout android:gravity="center" android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="wrap_content">
    <TextView
        android:text="000"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="subtext"/>
</LinearLayout></LinearLayout>

2 ответа

Для полной поддержки или RTL вы должны настроить API 17

Если вы нацеливаете свое приложение на Android 4.2 (targetSdkVersion или minSdkVersion приложения равно 17 или выше), вам следует использовать "start" и "end" вместо "left" и "right". Например

Встроенная поддержка RTL в Android 4.2

Мой текущий обходной путь для этого, если кто-то заинтересован в будущем, - добавить пустое представление между двумя элементами и заставить его заполнить пустое пространство между ними (weight = 1), чтобы они были выровнены правильно. Тем не менее я не понимаю, что ненормальное поведение гравитации ="начало"

Другие вопросы по тегам