Изменение цвета арабских диакритических знаков с помощью сменной строки не работает на некоторых телефонах

Я использовал этот код, чтобы изменить цвет арабских диакритических знаков:

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);
            }
Другие вопросы по тегам