Mostrar smiley en textview y edittext en android
Hola estoy desarrollando la aplicación de chat en la que quiero insertar smiley no tengo mucha idea acerca de cómo integrar y mostrar en él puede u darme sugerencia para hacer lo mismo?
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);
Encontré este código, en este utiliza imágenes, ¿es esto factible? O hay otras soluciones? Por favor, dame mejor solución para este thanx por adelantado
- ¿Cómo hacer una aplicación de chat en android?
- XMPP, WebSocket y otras preguntas
- La clase StickersManager no se encuentra para Quickblox
- La mejor manera de crear un cliente de chat Android XMPP en Unity3D
- Proveedor personalizado de IQ no reconocido
- Android pubnub chat utilizando analizar dando error de clave de autenticación incorrecta
- ¿Cómo crear una aplicación de chat en android?
- El adaptador personalizado de Android no funciona correctamente para la lista de chat
- ¿Cuáles son las mejores prácticas para crear una aplicación de chat en android?
- ¿cómo puedo crear este tipo de diseño de chat en mi aplicación?
- jsqmessagesviewcontroller como elagant biblioteca de mensajes para android
- Envío de imágenes como WhatsApp
- ¿Está bien usar la API HTTP REST para la aplicación de chat?
Sí, hay otra forma de mostrar smiley dentro de TextView
o EditText
. Construir un texto Spannable
usando ImageSpan
y luego setText el Spannable a TextView
o EditText
. Aquí hay un post para el mismo.
Para configurar Smiley en 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);
Ahora para buscar smiley en listview o 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; }
Creo que es un poco tarde.
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; }