Android:连接和彩色阿拉伯字母

时间:2013-07-25 17:58:05

标签: android colors arabic

我想在android视图(webview或textview)上显示连接的 AND 彩色阿拉伯字母。 首先,我使用了没有颜色的TextView,阿拉伯语显示正确。

当我使用spannableString时,彩色字母与单词断开连接。

其次,我使用了带有html和字体标记的WebView。我得到了相同的结果。

每当我尝试在单词中的字母上添加颜色时,此字母显示与该单词断开连接。

有没有人能解决这个问题?

Android版> 4.0

3 个答案:

答案 0 :(得分:1)

您必须将字母更改为Unicode。

例如,使用\ ufe91表示ب,使用\ ufeb4表示س,然后更改颜色。

如果您的文字很大,则在Android中展示可能会很慢。

我认为在显示大量的Spannable文本时会出现问题。

答案 1 :(得分:1)

经过多次努力,我感谢上帝,我找到了解决方案。  使用开源库:

Better-Arabic-Reshaper

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字符的好方法。