Bagaimana cara mengatur emoji dengan unicode dalam textview?

94

Hai, saya ingin melakukan hal berikut:

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

untuk mendapatkan ini di textview saya:

Senang sekali 😊

Bagaimana saya bisa menerapkan getEmojiByUnicode(unicode)?

Jenis unicodevariabel apa yang seharusnya? (String, char, int?)

Harap dicatat bahwa saya TIDAK ingin menggunakan Drawable!

Gilbert Giesbert
sumber

Jawaban:

185

Menemukan solusi:

Di unicode saya, saya mengganti ' U + ' dengan ' 0x '

Contoh: ganti ' U + 1F60A ' dengan ' 0x1F60A '

Dengan cara ini saya mendapat 'int' like

int unicode = 0x1F60A;

Yang bisa digunakan dengan

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

Jadi Textview menampilkan 😊 tanpa Drawable

Cobalah dengan http://apps.timwhitlock.info/emoji/tables/unicode

Gilbert Giesbert
sumber
3
bekerja pada 5.1 tetapi pada 4.4.4 saya mendapatkan? untuk string emoji saya
filthy_wizard
21
Apakah mungkin melakukan ini di file strings.xml?
Spektakulatius
@ user1232726, Ini akan tergantung pada ponsel pengguna termasuk emoji yang digunakan.
Suragch
Bisakah kamu membantu untuk mengubah "5794d5f7895fa10a8f8e1357" ini menjadi EMOJI .. @GilbertGiesbert .. Terima kasih ...
Ravindra Kushwaha
2
Sayangnya itu tidak berfungsi dengan Unicode 32 bit, seperti U + 1F1EF U + 1F1F2. Nilai ini berada di luar batas bilangan bulat.
Chris - Jr
40

Anda dapat langsung menggunakan Emoji dalam sumber daya string dengan menggunakan kode desimal seperti ini:

😊

sebagai contoh:

<string name="emoji">I am happy &#128522;</>
P1xelfehler.dll
sumber
11
Ini jawaban yang bagus; untuk menemukan kode desimal emoji, Anda dapat menggunakan sesuatu seperti quackit.com/character_sets/emoji
Adinia
1
saya tidak menemukan x diperlukan
hmac
3
Kesalahan saat membangun: Referensi karakter "& #
Dr. aNdRO
@hmac Saya telah memutar kembali jawabannya, menghapus sebutanx
Vadim Kotov
4

Catatan: Untuk Kotlin

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