Como definir emoji por Unicode em um textview?


93

Olá, gostaria de fazer o seguinte:

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

para obter isso na minha visualização de texto:

Tão feliz 😊

Como posso implementar getEmojiByUnicode(unicode) ?

Que tipo deve o unicode ser variável? (String, char, int?)

Note que NÃO quero usar Drawables!

Respostas:


184

Encontrou uma solução:

No meu Unicode, substituí ' U + ' por ' 0x '

Exemplo: substitua ' U + 1F60A ' por ' 0x1F60A '

Desta forma, eu tenho um 'int' como

int unicode = 0x1F60A;

Que pode ser usado com

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

Então Textview exibe 😊 sem Drawable

Experimente com http://apps.timwhitlock.info/emoji/tables/unicode


3
funciona em 5.1, mas em 4.4.4 recebo um? para minha string de emoji
filthy_wizard

21
É possível fazer isso no arquivo strings.xml?
Spektakulatius

@ user1232726, Depende do telefone do usuário, incluindo o emoji que está sendo usado.
Suragch

Você pode ajudar a converter este "5794d5f7895fa10a8f8e1357" em EMOJI .. @GilbertGiesbert ..Obrigado ...
Ravindra Kushwaha

2
Infelizmente ele não funciona com Unicode de 32 bits, como U + 1F1EF U + 1F1F2. Este valor está fora dos limites inteiros.
Chris - Jr

39

Você pode usar diretamente Emojis em recursos de string usando o código decimal como este:

😊

por exemplo:

<string name="emoji">I am happy &#128522;</>

10
Esta é uma boa resposta; para encontrar o código decimal de um emoji, você pode usar algo como quackit.com/character_sets/emoji
Adinia

1
não acho o x necessário
hmac

3
Erro durante a compilação: referência de caractere "& #
Dr. aNdRO

@hmac Reverti a resposta, removi as menções dex
Vadim Kotov

3

Nota: para Kotlin

fun getEmoji(unicode: Int): String {
    return String(Character.toChars(unicode))
}
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.