2012-02-17 59 views
14

你好我正在開發聊天應用程序,我想在其中插入笑臉 我沒有太多的想法如何整合和顯示在它 你能給我這樣做的建議嗎?在textview中顯示笑臉和在android中編輯文本

ImageGetter imageGetter = new ImageGetter() { 
    public Drawable getDrawable(String source) { 
     Drawable d = getResources().getDrawable(
       R.drawable.happy); 
     d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight()); 
     return d; 
    } 
}; 

cs = Html.fromHtml(
     "<img src='" 
       + getResources() 
         .getDrawable(R.drawable.happy) 
       + "'/>", imageGetter, null); 
System.out.println("cs is:- " + cs); 
edttxtemoji.setText(cs); 

我發現這個代碼,在它使用圖像,這是可行的嗎? 還是有另一種解決方案? 請給我更好的解決方案,爲此thanx提前

+0

請參閱解決方案: http://stackoverflow.com/questions/19534427/edittext-with-spannablestringbuilder-and-imagespan-doesnt-works-fine/19649371#19649371 – 2013-10-30 16:06:19

回答

8

是的還有另一種方式在TextViewEditText內顯示笑臉。使用ImageSpan構建Spannable文本,然後將文本Spannable設置爲TextViewEditText。這是一個post爲相同。

1

要的EditText

int value=R.id.ic_launcher; 
Drawable Smiley = getResources().getDrawable(value); 
Smiley.setBounds(0, 0, 15, 15); 
SpannableStringBuilder builder = new SpannableStringBuilder(); 
String imgValue = "["+value+"]"; 
builder.append(imgValue); 
builder.setSpan(new ImageSpan(Smiley), builder.length()-imgValue.length(), builder.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
edit_text.getText().insert(txt.getSelectionStart(), builder); 

設置笑臉現在去取笑臉在列表視圖或TextView的

textview.setText(addSmileySpans(context,edit_text.getText())); 
public CharSequence addSmileySpans(Context context, CharSequence msg) { 

    SpannableStringBuilder builder = new SpannableStringBuilder(your_recieved_message); 
    Pattern pattern = Pattern.compile("\\[([^\\[\\]]+)\\]"); 
    if(pattern != null) 
    { 
     Matcher matcher = pattern.matcher(your_recieved_message); 
     int matchesSoFar = 0; 
     while(matcher.find()) 
     { 
      CharSequence cs =matcher.group().subSequence(1, matcher.group().length()-1); 
      int value = Integer.parseInt(cs.toString()); 
      System.out.println("pattern is::"+matcher.group().subSequence(1, matcher.group().length()-1)); 
      int start = matcher.start() - (matchesSoFar * 2); 
      int end = matcher.end() - (matchesSoFar * 2); 
      Drawable Smiley = context.getResources().getDrawable(value); 
      Smiley.setBounds(0, 0,15,15); 
      builder.setSpan(new ImageSpan(Smiley), start + 1, end - 1, 0); 
      builder.delete(start, start + 1); 
      builder.delete(end - 2, end -1); 
      matchesSoFar++; 

     } 
    } 
    return builder; 
} 
0

我認爲這是有點晚了。

public void addSmily() { 
    CharSequence text = myEditText.getText(); 
    int resource = R.drawable.ic_menu_emoticons ; 
    myEditText.setText(getSpannableText(text,resource)); 
} 

private Spannable getSpannableText(CharSequence text, int smilyToAppend) { 
    Spannable spannable = Factory.getInstance().newSpannable(text+" "); 
    ImageSpan smilySpan = new ImageSpan(getApplicationContext(),smilyToAppend); 
    spannable.setSpan(smilySpan, spannable.length()-1, spannable.length(), 0); 
    return spannable; 
} 
使用ImageSpan用的EditText
相關問題