Изменение цвета арабских диакритических знаков с помощью сменной строки не работает на некоторых телефонах
Я использовал этот код, чтобы изменить цвет арабских диакритических знаков:
List<String> arabicV = Arrays.asList("ؘ","ؙ","ؚ","ؐ","ؐؑ","ؒ","ؓ","ؔ","ؕ","ؖ","ؗ","ؗ","ﹰﹰ","ﹲ","ﹴ","ﹸ","ﹼ","ﹾ",
"ٍ","ً","ُ","ِ","َ","ّ","ٓ","ٔ","ْ","ِ","َّ","َ","َْ","َ","ً","ٌ","َ","ُ","ٍ"
,"َ","ْ","ِ","ُ","ّ","ً");
for (int j = 0; j < myString.length; j++) {
if (arabicV.contains(myString.substring(j, j + 1))) {
wordtoSpan.setSpan(new ForegroundColorSpan(Color.parseColor("#FF0000")),
j, j+1 , Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
}
}
он работает нормально на моем устройстве, как это:
но на некоторых устройствах (например, LG-G5) он не работает. как это:
Кто-нибудь знает, как это исправить Или какие-нибудь другие альтернативные способы?
1 ответ
Решение
Я нашел свой ответ, есть способ сделать это правильно на всех устройствах:
SpannedString result = new SpannedString("");
for (int j=0;j<myString.length();j++){
Spannable wordtoSpan = new SpannableString(myString.substring(j,j+1));
if (arabicV.contains(myString.substring(j,j+1))) {
wordtoSpan.setSpan(new ForegroundColorSpan(Color.parseColor("#FF0000")),
0, 1, 0);
}
else
{
wordtoSpan.setSpan(new ForegroundColorSpan(Color.parseColor( "#000000")),
0, 1, 0);
}
result = (SpannedString) TextUtils.concat(result,"",wordtoSpan);
}