我想在android视图(webview或textview)上显示连接的 AND 彩色阿拉伯字母。 首先,我使用了没有颜色的TextView,阿拉伯语显示正确。
当我使用spannableString时,彩色字母与单词断开连接。
其次,我使用了带有html和字体标记的WebView。我得到了相同的结果。
每当我尝试在单词中的字母上添加颜色时,此字母显示与该单词断开连接。
有没有人能解决这个问题?
Android版> 4.0
答案 0 :(得分:1)
您必须将字母更改为Unicode。
例如,使用\ ufe91表示ب,使用\ ufeb4表示س,然后更改颜色。
如果您的文字很大,则在Android中展示可能会很慢。
我认为在显示大量的Spannable文本时会出现问题。
答案 1 :(得分:1)
经过多次努力,我感谢上帝,我找到了解决方案。 使用开源库:
1:它将以unicode的形式返回android文本。
2:然后你应用这样的跨度颜色:
final SpannableStringBuilder ssb = new SpannableStringBuilder();
final int flag = Spannable.SPAN_EXCLUSIVE_EXCLUSIVE;
//converting arabic text to unicode chars
String dd=ArabicUtilities.reshape("بِسْمِ اللَّهِ الرَّحْمَنِ الرَّحِيمِ");
ssb.append(dd);
//applying colors
ssb.setSpan(new ForegroundColorSpan(Color.RED), 0, 1, flag);
ssb.setSpan(new ForegroundColorSpan(Color.RED), 1, 2, flag);
ssb.setSpan(new ForegroundColorSpan(Color.GREEN), 2, 3, flag);
ssb.setSpan(new ForegroundColorSpan(Color.BLUE), 3, 4, flag);
//seting formated spanned text
textview.setText(ssb);
答案 2 :(得分:1)
Usama和danial都有正确的想法,但他们没有非常清楚地解释。如果你使用unicode阿拉伯字母(0x06--),最新版本的android会在需要的时候自动将字母连接在一起,但这是在应用着色后完成的,并且着色打破了字母之间的连接。
您必须将unicode阿拉伯字母(0x06--)转换为阿拉伯语演示文稿B(0xFE--),并在转换时自行应用连接,然后使用已设置的字母上的颜色设置。 Usams建议的图书馆看起来像是从unicode arabic转换为演示B字符的好方法。