android - 使用可跨越字符串更改阿拉伯语变音符号颜色在某些手机上不起作用

标签 android spannablestring

我使用这段代码来改变阿拉伯语变音符号的颜色:

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);

                            }

                        }

它在我的设备上运行良好,如下所示:

enter image description here

但在某些设备(如 LG-G5)上它不起作用。像这样:

enter image description here

有谁知道如何解决这个问题或任何其他替代方法?

最佳答案

我找到了我的答案,有一种方法可以让它在所有设备上都正确:

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);
            }

关于android - 使用可跨越字符串更改阿拉伯语变音符号颜色在某些手机上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51229862/

相关文章:

Java Android - JPEG 图像旋转

java - 克隆 SpannableStringBuilder

android - 减小 ImageSpan 的高度和宽度

android - 如何使 RelativeSizeSpan 对齐到顶部

android - 我无法让 setSpan 工作

android - BackgroundColorSpan 始终为黄色

android - Adobe Air Native Extensions 和 VideoView - 调用 MediaController.show() 时在较新的设备上崩溃

android - KeyboardView 不采用 XML 属性 keyBackground

android - 保留所有字符串 JNI android 以防止逆向工程?

java - 尝试从java访问MySQL,但它不工作