Проблема с несколькими языками в EditText Android

введите описание изображения здесьвведите описание изображения здесьвведите описание изображения здесьЯ использую текст редактирования 2-х типов на моей странице входа. В арабском языке гравитация EditText равна END. Но подсказка в том, что EditText получает выравнивание по левому краю. Почему? Когда я даю inputType="textPassword" никаких проблем. Проблемы в android:inputType="textEmailAddress"

Код EditText приведен ниже

<EditText
       android:layout_width="match_parent"
       android:layout_height="wrap_content"  
       android:hint="@string/userName"
       android:inputType="textEmailAddress"
       android:gravity="end"/>

<EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="@string/password"
        android:inputType="textPassword"
        android:gravity="end" />

person jojo    schedule 01.09.2018    source источник


Ответы (2)


Попробуйте удалить:

android:gravity="end"

В первом EditText. Он должен автоматически сделать текст RTL, если вы уже поместили арабский values-ar в папку значений.


Не забудьте добавить:

android:supportsRtl="true"

В AndroidManifest.xml тоже.

Обновить;

Сначала не понял вас, но добавьте это:

android:layoutDirection="rtl"           
android:textDirection="rtl"

Это сделает макет и направление текста rtl и должно помочь в этой цели.

person ʍѳђઽ૯ท    schedule 01.09.2018
comment
Теперь подсказка выровнена по правому краю. Но когда я начинаю печатать, он выравнивается по левому краю - person jojo; 01.09.2018
comment
Тогда добавление android:textAlignment="viewStart" с android:textDirection="locale" должно помочь. - person ʍѳђઽ૯ท; 01.09.2018
comment
android:textAlignment=viewStart теперь подсказка выравнивается по левому краю. - person jojo; 01.09.2018
comment
android:supportsRtl=true уже добавлено в манифест. я думаю, что проблемы в Android: inputType = textEmailAddress - person jojo; 01.09.2018
comment
У меня есть файл values-ar. Подсказка арабская. Он автоматически выравнивается по левому краю. Но когда я начинаю печатать, он должен начинаться слева. Поэтому я пытаюсь использовать android:gravity=end или android:textAlignment=viewStart. Затем намекните на проблему - person jojo; 01.09.2018
comment
Это из-за андорида и android:textAlignment. Если макет или направление андроида RTL, оно начинается справа налево, если вы пишете слова с письмом справа налево, а если вы пишете на английском языке в направлении с письмом справа налево, оно начинается, конечно же, слева направо. Это, кажется, не проблема. - person ʍѳђઽ૯ท; 01.09.2018
comment
Теперь он работает нормально, когда я добавляю эти две строки в android:layoutDirection=rtl android:textDirection=rtl в мой xml-файл. - person jojo; 03.09.2018
comment
Рад это слышать. Я на самом деле не понял вас сначала, но рад слышать, что теперь это работает. Я добавил коды в ответ для будущих поисков. Спасибо - person ʍѳђઽ૯ท; 04.09.2018

Попробуйте с этим

<EditText
                android:id="@+id/username"
                style="@style/Widget.EditText"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:textAlignment="viewStart"
                android:hint="@string/username"
                android:layoutDirection="locale"
                android:padding="10dip"
                android:textDirection="locale" />
    <EditText
                android:id="@+id/password"
                style="@style/Widget.EditText"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:textAlignment="viewStart"
                android:hint="@string/password"
                android:layoutDirection="locale"
                android:padding="10dip"
                android:textDirection="locale" />
person Navas pk    schedule 27.09.2019