2011-08-26 14 views
5

Cómo obtener texto y emoticones de edittext en String?Cómo obtener texto y Smiley de Edittext en String?

Usando el siguiente código era Add Smiley/Emojis en Edittext pero cómo obtener texto/emoticón de edittext en formato de cadena.

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); 
    edttxtemoji.setText(cs); 
+0

estoy haciendo algo similar aquí !!! http://stackoverflow.com/questions/16768930/implementations-of-emoji-emoticon-view-keyboard-layouts – toobsco42

Respuesta

0

Uso Html.toHtml (texto abarcó)

como:

String myString = Html.toHtml(cs); 
System.out.println(myString); 

edición: excavación iam en la oscuridad aquí, pero podría ser que desea la representación de texto (cadena) de tu Smillie?

como que tiene:

cs = Html.fromHtml(
      "<img src='" 
        + getResources() 
          .getDrawable(R.drawable.happy) 
        + "'/>", imageGetter, null); 

y desea:

cadena cs = ":)";

¿es así? si no, mi respuesta anterior le da la representación técnica de cadena de su código Html

+0

Ya lo intenté pero esto no funciona. –

+0

¿Cómo esto no funciona? – Michele

+0

Estas 2 líneas me dan la siguiente salida en formato de cadena.

8

Utilice la siguiente función.

public static Spannable getSmiledText(Context context, String text) { 
      SpannableStringBuilder builder = new SpannableStringBuilder(text); 
      int index;for (index = 0; index < builder.length(); index++) { 
      for (Entry<String, Integer> entry : emoticons.entrySet()) { 
       int length = entry.getKey().length(); 
       if (index + length > builder.length()) 
       continue; 
       if (builder.subSequence(index, index + length).toString().equals(entry.getKey())) { 
       builder.setSpan(new ImageSpan(context, entry.getValue()), index, index + length, 
        Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
       index += length - 1; 
       break; 
       } 
      } 
      } 
      return builder; 
     } 

siguiente código de emociones ...

private static final HashMap<String, Integer> emoticons = new HashMap<String, Integer>(); 
     static { 
      emoticons.put("8-)", R.drawable.s1); 
      emoticons.put(":-&", R.drawable.s2); 
      emoticons.put(">:-)", R.drawable.s3).....}; 

y setText usando

tv_msg_send.setText(getSmiledText(getApplicationContext(), edt_msg.getText().toString())); 
+0

Este código no es Smileys Si uso Your Code, el texto "obj" es Return, así que esto no es útil para mí. –

+0

@dipak :: pero recibí el texto perfecto para configurar smiley en la vista de texto. y una cosa más he intentado usar tu código varias veces antes de esta publicación, pero no puedo obtener la solución. Ahora no estoy usando el método ImageGetter en lugar de estar usando "addTextChangedListener" y cambiando el código smiley con imagen llamando directamente la función "getSmiledText" arriba. así que por favor intente de nuevo, puede ayudarle – amity

+0

Usé su código en mi proyecto, pero esto no me ayuda. gracias por la ayuda. –

Cuestiones relacionadas