Ошибка выравнивания текста при использовании арабского шрифта
Снимок экрана ниже показывает мою проблему.
Первый 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 или сделать мой текст не разбитым на слово. Но не знаете, куда идти?
Ответы
Ответ 1
Я все еще не могу понять, почему Android разбивает арабские слова на отдельные буквы так или иначе во втором редактировании. Я предоставляю ссылку, которая использует класс, чтобы присоединиться к выделенным буквам и сформировать слово снова.
В функции reshape
было ошибочно добавлено \n
в конце, просто удалив его, решает проблему.
Ответ 2
Я уверен, что проблема с файлом шрифта, который вы используете.
[Извините, мне не разрешено загружать снимок экрана, так как моя репутация ниже: (]
Для макета я задавал текст в xml и шрифт в коде. И я не устанавливаю никаких атрибутов, например, заполнение/гравитация. Но он отлично работал у меня.
Итак, я могу заверить вас, что использование файла шрифта, стиль которого соответствует вашему требованию, решит вашу проблему.
Просто, чтобы помочь вам, но я не уверен, что получил файл шрифта из DroidSansFallback.ttf
Ответ 3
Просто гадать:)...,
-
Что, если размер арабского шрифта ниже? [Если это так, то Gravity.CENTER_VERTICAL должен был сработать для вас:(]
-
Может быть, это стиль этого файла шрифта. Как пробовать другой файл шрифта для арабского текста?