Подтвердить что ты не робот

Ошибка выравнивания текста при использовании арабского шрифта

Снимок экрана ниже показывает мою проблему.

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

Я объявил строку в strings.xml следующим образом:

<string name="ar_login">دخول</string>

screenshot of the problem

Вот как я устанавливаю подсказку EditText:

UserName.setTypeface(ArabicFont);
String hint = getString(R.string.ar_HintUserName);
....
UserName.setHint(hint);

UPDATE: Я использовал это, но бесполезно:

UserName.setGravity(Gravity.CENTER_VERTICAL);

Но с этим текст немного пошевелился; но я думаю, что он не является общим:

UserName.setPadding(0,15,0,0);

С Padding, English слова перемещаются вниз.

ОБНОВЛЕНИЕ 2: Первоначально арабские тексты разделены; означает, что они показаны буквами по буквам. Поэтому, чтобы присоединиться к ним, я использовал этот Arabic Reshaper. Чтобы загрузить код, проверьте ссылку

Теперь, когда я изменяю арабский текст, а затем устанавливаю на TextView или как EditText's Hint, он переводится вверх, но без изменения.

Итак, я думаю, должен ли я изменить класс reshape или сделать мой текст не разбитым на слово. Но не знаете, куда идти?

4b9b3361

Ответ 1

Я все еще не могу понять, почему Android разбивает арабские слова на отдельные буквы так или иначе во втором редактировании. Я предоставляю ссылку, которая использует класс, чтобы присоединиться к выделенным буквам и сформировать слово снова.

В функции reshape было ошибочно добавлено \n в конце, просто удалив его, решает проблему.

Ответ 2

Я уверен, что проблема с файлом шрифта, который вы используете.

[Извините, мне не разрешено загружать снимок экрана, так как моя репутация ниже: (]

Для макета я задавал текст в xml и шрифт в коде. И я не устанавливаю никаких атрибутов, например, заполнение/гравитация. Но он отлично работал у меня.

Итак, я могу заверить вас, что использование файла шрифта, стиль которого соответствует вашему требованию, решит вашу проблему.

Просто, чтобы помочь вам, но я не уверен, что получил файл шрифта из DroidSansFallback.ttf

Ответ 3

Просто гадать:)...,

  • Что, если размер арабского шрифта ниже? [Если это так, то Gravity.CENTER_VERTICAL должен был сработать для вас:(]

  • Может быть, это стиль этого файла шрифта. Как пробовать другой файл шрифта для арабского текста?