2013-07-25 57 views
3

我想顯示連接AND android視圖(webview或textview)上的彩色阿拉伯字母。 首先,我使用了沒有顏色的TextView,並且阿拉伯文顯示正確。Android:連接和彩色阿拉伯文字母

當我使用spannableString時,彩色字母從單詞斷開。

其次,我使用了帶有html和font標籤的WebView。我有同樣的結果。

每次我嘗試將顏色放在單詞中的某個字母上時,該字母顯示與該單詞斷開連接。

有沒有人有解決這個問題的辦法?

Android版本> 4.0

+1

發佈你的代碼肯定會幫助你。 –

+0

1-使用textView和Spannable String text =「بسماللهالرحمنالرحيم」; Spannable spannable = new SpannableString(text); //設置前兩個字母的顏色 spannable.setSpan(new ForegroundColorSpan(Color.BLUE),0,2,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); //在TextView上設置文本\t \t TextView textTV =(TextView)v.findViewById(R.id.textTV);文本電視。的setText(spannable); ** - >字符是有顏色但未連接** – nono

+0

2 - 使用webView和HTML String text =「بسماللهالرحمنالرحيم」;在第一2個字母 字符串的html = 「 」+ +「<字體顏色= \」 紅色\ 「>بس +」 ماللهالرحمنالرحيم 「 +」「 //設置顏色; //上TextView的設置文本\t \t web視圖web視圖=(web視圖)v.findViewById(R.id.web); web視圖.loadDataWithBaseURL( 「文件:/// android_asset /」,HTML,「文本/ html「,」utf-8「,null); ** - >字符有顏色但不連接** – nono

回答

0

您必須將字母更改爲Unicode。

例如,對於u使用\ ufe91,對於س使用\ ufeb4,然後更改顏色。

如果您的文字較大,則可能在Android中顯示較慢。

我認爲在顯示大的Spannable文本時有問題。

1

感謝上帝,經過艱苦的鬥爭,我找到了解決辦法。 使用開放源碼庫:

Better-Arabic-Reshaper

1:它將以Unicode的形式返回Android的文本。

2:則u應用範圍的顏色是這樣的:

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

烏薩馬·本和丹尼爾都具有正確的想法,但他們並沒有解釋的很清楚了。如果您使用unicode阿拉伯字母(0x06--),則最新版本的android會在需要時自動將這些字母連接在一起,但這是在應用着色之後完成的,並且着色會斷開字母之間的連接。

您必須將unicode阿拉伯字母(0x06--)轉換爲阿拉伯語演示文稿B(0xFE--),並在轉換時自己應用連接,然後使用已設置的連接字母設置顏色。 Usams建議的圖書館看起來像是一種從unicode阿拉伯文轉換爲B文字的好方法。