Проблема выравнивания текста при использовании арабского шрифта - PullRequest
12 голосов
/ 28 июня 2011

На скриншоте ниже показана моя проблема.

Первый 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);

ОБНОВЛЕНИЕ: Я использовал это, но бесполезно:

UserName.setGravity(Gravity.CENTER_VERTICAL);

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

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

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

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

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

Так что я думаю, должен ли я изменить класс изменения формы ИЛИ сделать текстовое представление, чтобы не разбить слово.Но не знаете, куда идти?

Ответы [ 3 ]

3 голосов
/ 11 июля 2011

Я все еще не могу выяснить, почему Android разбивает арабские слова на отдельные буквы, так или иначе, в моем втором редактировании я предоставляю ссылку, которая использует класс для объединения разделенных букв и формирования слова снова.В функции reshape она по ошибке добавляла \n в конце, просто удаление ее решает проблему.

1 голос
/ 01 июля 2011

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

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

Для макета я настраивал текст в xml и гарнитуру в коде. И я не устанавливаю никаких атрибутов, таких как padding / gravity Но у меня все работало нормально.

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

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

0 голосов
/ 29 июня 2011

Просто предположение :) ...,

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

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

...