2014-12-06 2 views
0

Я хочу показать картинку в TextView как смайлик. У меня есть метод, который получает строку и добавляет ImageSpans в CharSequence, которые заменяют текстовые смайлики, такие как :-) с графической версией. enter image description hereНе показывать картинку в TextView от ImageSpan в Android

public Spannable addSmileySpans(CharSequence text) { 
    SpannableStringBuilder builder = new SpannableStringBuilder(text); 

    Matcher matcher = mPattern.matcher(text); 
    while (matcher.find()) { 
     int resId = mSmileyToRes.get(matcher.group()); 
     builder.setSpan(new ImageSpan(mContext, resId), 
         matcher.start(), matcher.end(), 
         Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
    } 

    return builder; 
} 

Затем я использую его на моем адаптере:

viewHolder.txtReceivedBody.setText(parser.addSmileySpans(message.body)); 

Кроме того, здесь определяется TextView elemnt:

<TextView 
      android:id="@+id/txtReceivedBody" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_toRightOf="@+id/imgReceivedDirection" 
      android:layout_marginRight="30dp" 
      android:background="@drawable/selector_conversation_received" 
      android:minHeight="40dp" 
      android:paddingLeft="10dp" 
      android:paddingRight="10dp" 
      android:paddingTop="4dp" 
      android:paddingBottom="4dp" 
      android:textSize="18sp" 
      android:autoLink="all" 
      android:gravity="right"/> 

К сожалению, не показывают изображения в TextView и только шоу основная строка. Что я должен сделать, чтобы решить эту проблему?

+0

пожалуйста отправлять ур желаемое изображение PLS .. –

+0

Я просто хочу, чтобы показать смайлик изображение. Я добавил его выше. –

ответ

0

обеспечивают ваш шаблон

мой паттерн [ID изображения]

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; 
} 
Смежные вопросы