Как установить смайлики по юникоду в текстовом виде?


94

Привет, я бы хотел сделать следующее:

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

чтобы получить это в моем текстовом представлении:

Так счастлив 😊

Как я могу реализовать getEmojiByUnicode(unicode)?

Какого типа должна unicodeбыть переменная? (Строка, символ, целое число?)

Обратите внимание, что я НЕ хочу использовать Drawables!

Ответы:


185

Нашел решение:

В моем Юникоде я заменил « U + » на « 0x »

Пример: заменить ' U + 1F60A ' на ' 0x1F60A '

Таким образом, я получил int как

int unicode = 0x1F60A;

Что можно использовать с

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

Таким образом, Textview отображает 😊 без Drawable

Попробуйте с http://apps.timwhitlock.info/emoji/tables/unicode


3
работает на 5.1, но на 4.4.4 я получаю? для моей строки эмодзи
filthy_wizard 04

21
Можно ли это сделать в файле strings.xml?
Spektakulatius

@ user1232726, это будет зависеть от телефона пользователя, включая используемые смайлы.
Suragch

Не могли бы вы помочь преобразовать этот "5794d5f7895fa10a8f8e1357" в EMOJI .. @GilbertGiesbert .. Спасибо ...
Равиндра Кушваха

2
К сожалению, он не работает с 32-битным Unicode, например U + 1F1EF U + 1F1F2. Это значение находится за пределами целочисленных границ.
Крис - младший

40

Вы можете напрямую использовать Emojis в строковых ресурсах, используя десятичный код, например:

😊

например:

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

11
Это хороший ответ; чтобы найти десятичный код эмодзи, вы можете использовать что-то вроде quackit.com/character_sets/emoji
Adinia

1
я не считаю x необходимым
hmac

3
Ошибка при сборке: ссылка на персонажа "& #
Dr. aNdRO

@hmac Откатил ответ, удалил упоминанияx
Вадим Котов

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.