2013-02-01 16 views
21

Ho cercato per gli ultimi 3 giorni di mostrare un'emoticon grafica personalizzata nella visualizzazione predefinita di un messaggio Android. Ho mostrato con successo le mie emoticon personalizzate al posto delle chiavi. Ora il problema è che sto cercando di mostrare un costruttore di stringhe estensibile. Ma il drawable non appare sulla tastiera. Ecco il codice finora:Mostra emoticon personalizzate nella tastiera Android

 SpannableString ss = new SpannableString(" "); 
        Drawable d = getResources().getDrawable(R.drawable.a); 
        d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight()); 
//     ImageSpan span = new ImageSpan(d, ImageSpan.ALIGN_BASELINE); 
        ImageSpan span = new ImageSpan(d); 
//     ss.setSpan(span, 0, 1, Spannable.SPAN_INCLUSIVE_EXCLUSIVE); 

        mComposing.append(":"); 
        mComposing.setSpan(new ImageSpan(d), 0,1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
        getCurrentInputConnection().commitText(mComposing, 1); 

Ho provato diversi metodi per adattarsi in qualche modo drawable ma appena wont show on vista messaggi di default di Android. Qualsiasi aiuto sarebbe molto apprezzato.

+0

Hey SoH, hai trovato una soluzione per il tuo problema? Ho anche lo stesso problema quando ho intenzione di aggiungere un'immagine all'app di Android Messaging. Se hai una risposta, per favore pubblicala come risposta a questa discussione. Grazie .. – harsh

+0

Sto facendo qualcosa di simile QUI !!! http://stackoverflow.com/questions/16768930/implementations-of-emoji-emoticon-view-keyboard-layouts – toobsco42

+0

Puoi chiarire cosa intendi con "la visualizzazione predefinita di Android?" Quale classe non sta visualizzando correttamente ImageSpan e da dove proviene l'istanza? – Erhannis

risposta

0

Forse si potrebbe usare:

String txt = "<img src=\"" + resourceID + "\"/>"; per generare un tag HTML e dopo che

Spanned spanned = Html.fromHtml(txt, emojiGetter, null);
editTextObj = setText(spanned,BufferType.SPANNABLE);

dove emojiGetter è

private ImageGetter emojiGetter = new ImageGetter() { 
    public Drawable getDrawable(String source){ 
     int id = getResources().getIdentifier(source, "drawable", context.getPackageName()); 

     Drawable emoji = getResources().getDrawable(id); 
     int w = (int)emoji.getIntrinsicWidth() ; 
     int h = (int)emoji.getIntrinsicHeight() ; 
     emoji.setBounds(0, 0, w, h); 
     return emoji; 
    } 
}; 

Funziona bene per me. Ho creato un componente CustomEditText per semplificare questa conversione.

+0

Hey iflorit, ho anche lo stesso problema che un'immagine non viene visualizzata nell'app di messaggistica Android. Ho creato una tastiera personalizzata utilizzando l'esempio di SOftKeyboard in SDK. Ho provato il tuo codice ma mostra solo un quadratino con testo OBJ, non la mia immagine. Ho notato che nel tuo codice hai impostato l'immagine su un EditText. Ma nell'app di messaggistica Android, non possiamo accedere al suo EditText. Ma nella tastiera personalizzata inserisco le lettere nell'app di messaggistica utilizzando l'oggetto StringBuilder di SoftKeyboard. C'è un modo per inserire immagini nell'app di messaggistica usando quell'oggetto StringBuilder? Grazie in anticipo .. !! – harsh

+0

No, non è una soluzione. Devi ottenere l'unicode per tutti gli emoji e stamparli. –

1

può essere questo sarà utile: Emoticons-Keyboard

Vedi anche questo: Implementations of Emoji (Emoticon) View/Keyboard Layouts

+0

Nota che [risposte solo per collegamento] (http://meta.stackoverflow.com/tags/link-only-answers/info) sono scoraggiate, pertanto le risposte dovrebbero essere il punto finale di una ricerca di una soluzione (vs. ancora un altro scalo di riferimenti, che tendono a diventare stantii nel tempo). Si prega di considerare l'aggiunta di una sinossi autonoma qui, mantenendo il collegamento come riferimento. – kleopatra

+0

@kleopatra Ok quindi starò attento e grazie per la tua suggerimento !!! – captaindroid

0

ho raggiunto ci fa in questo modo

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

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

      getCurrentInputConnection().commitText(cs, 1); 

// ma sovrascrivere l'ultimo testo inserito vedere my question here

Problemi correlati