2013-04-25 47 views
0

我想在Android中的TextView中顯示圖像,並認爲這可能與Html.fromHtml()。我發現圖像是本地資源的不同教程。當我有圖片的網址時,是否也有可能?如果是的話,有人可以給我一個例子嗎?Android - 通過Html.fromHtml在TextView中顯示圖像?

+0

爲什麼要將圖像加載到TextView中?這就是ImageView的用途。文本視圖中的圖像 – 2013-04-25 12:30:09

+0

?這不是一個可怕的決定嗎? – sumon 2013-04-25 12:30:28

+1

因爲我讀了一個聊天,並有笑臉。所以我想要做一些像'blablabla'笑臉'blablabla'因此我需要顯示它到文本視圖 – Phil 2013-04-25 12:31:11

回答

1

我有解決方案。把下面的代碼添加到你的文本視圖中的笑容。

private static final Factory spannableFactory = Spannable.Factory 
     .getInstance(); 

private static final Map<Pattern, Integer> emoticons = new HashMap<Pattern, Integer>(); 

static { 
    addPattern(emoticons, ":)", R.drawable.happy); 
    addPattern(emoticons, ":(", R.drawable.sad); 
    addPattern(emoticons, ":D", R.drawable.very_happy); 
    // ...as many pattern you want. But make sure you have images in drawable directory 
} 

private static void addPattern(Map<Pattern, Integer> map, String smile, 
     int resource) { 
    map.put(Pattern.compile(Pattern.quote(smile)), resource); 
} 

public static boolean addSmiles(Context context, Spannable spannable) { 
    boolean hasChanges = false; 
    for (Entry<Pattern, Integer> entry : emoticons.entrySet()) { 
     Matcher matcher = entry.getKey().matcher(spannable); 
     while (matcher.find()) { 
      boolean set = true; 
      for (ImageSpan span : spannable.getSpans(matcher.start(), 
        matcher.end(), ImageSpan.class)) 
       if (spannable.getSpanStart(span) >= matcher.start() 
         && spannable.getSpanEnd(span) <= matcher.end()) 
        spannable.removeSpan(span); 
       else { 
        set = false; 
        break; 
       } 
      if (set) { 
       hasChanges = true; 
       spannable.setSpan(new ImageSpan(context, entry.getValue()), 
         matcher.start(), matcher.end(), 
         Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
      } 
     } 
    } 
    return hasChanges; 
} 

public static Spannable getSmiledText(Context context, CharSequence text) { 
    Spannable spannable = spannableFactory.newSpannable(text); 
    addSmiles(context, spannable); 
    return spannable; 
} 

做完複製粘貼後,寫下面的代碼,在你的文本視圖中設置微笑。

textView.setText(getSmiledText(ActivityName.this,"Hi :) How are you...??? :D I am very :(")); 
+1

WOW !!!這幫助了我很多,謝謝(: – Phil 2013-04-25 17:53:08

1

代替TextView,您可以使用WebView來顯示圖像。如果您需要顯示笑臉,您需要提取該關鍵字並替換爲特定圖像並繪製。爲此,您需要創建自定義視圖。

相關問題