Проблемы с арабским текстом и высотой строки в EditText
Я накладываю цветной текст на части введенной пользователем строки в EditText
, Однако в высотах строк арабского текста нет последовательности. getLineHeight()
отлично работает для латинского текста, но он слишком мал для арабского текста. Я должен был использовать getLineBounds()
чтобы получить правильную высоту арабских строк текста. к несчастью getLineBounds()
слишком велик для латинского текста.
Однако эта ошибка возникает только на моем телефоне (Google Pixel 1 на Android P). Когда я тестирую на эмуляторе (Nexus 9 на Android 8.1), getLineBounds()
также возвращает слишком большое значение. Я не знаю, что вызывает это несоответствие.
1 ответ
Это потому, что Android P использует "отступ между строками" при отображении нелатинского текста.
Чтобы это исправить, добавьте это в свой конструктор EditText
:
if (Build.VERSION.SDK_INT >= 28) {
setFallbackLineSpacing(false);
}
Если вы беспокоитесь о том, что ваш текст слишком компактен, вы можете использовать это и в своем конструкторе.
if (usingArabicText) {
setLineSpacing(15, 1);
}