Wie setze ich Emoji per Unicode in einer Textansicht?

93

Hallo, ich möchte Folgendes tun:

??? unicode = U+1F60A
String emoji = getEmojiByUnicode(unicode)
String text = "So happy "
textview.setText(text + emoji);

um dies in meiner Textansicht zu bekommen:

So glücklich 😊

Wie kann ich implementieren getEmojiByUnicode(unicode)?

Welcher Typ sollte die unicodeVariable sein? (String, char, int?)

Bitte beachten Sie, dass ich keine Drawables verwenden möchte!

Gilbert Giesbert
quelle

Antworten:

183

Eine Lösung gefunden:

In meinem Unicode habe ich ' U + ' durch ' 0x ' ersetzt.

Beispiel: Ersetzen Sie ' U + 1F60A ' durch ' 0x1F60A '

Auf diese Weise bekam ich ein "int" wie

int unicode = 0x1F60A;

Welches kann mit verwendet werden

public String getEmojiByUnicode(int unicode){
    return new String(Character.toChars(unicode));
}

Textview zeigt also 😊 ohne Drawable an

Versuchen Sie es mit http://apps.timwhitlock.info/emoji/tables/unicode

Gilbert Giesbert
quelle
3
funktioniert auf 5.1 aber auf 4.4.4 bekomme ich ein? für meine Emoji-Zeichenfolge
filthy_wizard
21
Ist dies in der Datei strings.xml möglich?
Spektakulatius
@ user1232726, Dies hängt vom Telefon des Benutzers ab, einschließlich des verwendeten Emoji.
Suragch
Kannst du bitte helfen, diese "5794d5f7895fa10a8f8e1357" in die EMOJI umzuwandeln? @GilbertGiesbert .. Danke ...
Ravindra Kushwaha
1
Leider funktioniert es nicht mit 32-Bit-Unicode wie U + 1F1EF U + 1F1F2. Dieser Wert liegt außerhalb der Ganzzahlgrenzen.
Chris - Jr
39

Sie können Emojis direkt in Zeichenfolgenressourcen verwenden, indem Sie den folgenden Dezimalcode verwenden:

😊

beispielsweise:

<string name="emoji">I am happy &#128522;</>
P1xelfehler
quelle
10
Dies ist eine gute Antwort; Um
Adinia
1
Ich finde das x nicht notwendig
hmac
3
Fehler beim Erstellen:
Zeichenreferenz
@hmac Ich habe die Antwort zurückgesetzt, Erwähnungen vonx
Vadim Kotov
3

Hinweis: Für Kotlin

fun getEmoji(unicode: Int): String {
    return String(Character.toChars(unicode))
}
Bipin Bharti
quelle