Jak ustawić emoji przez Unicode w widoku tekstu?

94

Cześć, chciałbym wykonać następujące czynności:

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

aby uzyskać to w moim widoku tekstu:

Tak szczęśliwy 😊

Jak mogę wdrożyć getEmojiByUnicode(unicode)?

Jakiego typu powinna unicodebyć zmienna? (String, char, int?)

Pamiętaj, że NIE chcę używać Drawables!

Gilbert Giesbert
źródło

Odpowiedzi:

185

Znalazłem rozwiązanie:

W moim Unicode zamieniłem „ U + ” na „ 0x

Przykład: zamień „ U + 1F60A ” na „ 0x1F60A

W ten sposób otrzymałem polubienie „int”

int unicode = 0x1F60A;

Które mogą być używane z

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

Dlatego Textview wyświetla 😊 bez opcji do rysowania

Wypróbuj z http://apps.timwhitlock.info/emoji/tables/unicode

Gilbert Giesbert
źródło
3
działa na 5.1, ale na 4.4.4 dostaję? dla mojego ciągu emoji
filthy_wizard
21
Czy można to zrobić w pliku strings.xml?
Spektakulatius
@ user1232726, będzie to zależeć od telefonu użytkownika, w tym używanego emoji.
Suragch
Czy możesz pomóc w konwersji tego "5794d5f7895fa10a8f8e1357" na EMOJI .. @GilbertGiesbert .. Dzięki ...
Ravindra Kushwaha
2
Niestety nie działa z 32-bitowym Unicode, takim jak U + 1F1EF U + 1F1F2. Ta wartość znajduje się poza granicami liczb całkowitych.
Chris - Jr
40

Możesz bezpośrednio używać emotikonów w zasobach ciągów, używając kodu dziesiętnego w następujący sposób:

😊

na przykład:

<string name="emoji">I am happy &#128522;</>
P1xelfehler
źródło
11
To jest dobra odpowiedź; aby znaleźć kod dziesiętny emoji, możesz użyć czegoś takiego jak quackit.com/character_sets/emoji
Adinia
1
nie uważam x za konieczne
hmac
3
Błąd podczas kompilacji: odniesienie do postaci „& #
Dr. aNdRO
@hmac Wycofałem odpowiedź, usunąłem wzmianki ox
Vadim Kotov
3

Uwaga: dla Kotlin

fun getEmoji(unicode: Int): String {
    return String(Character.toChars(unicode))
}
Bipin Bharti
źródło