Символы эмодзи выглядят по-разному на метке клавиши клавиатуры и в текстовом представлении.

Я пытаюсь создать клавиатуру emoji. У меня проблема на одном из тестовых устройств: символы эмодзи выглядят по-разному на метке клавиши клавиатуры и в текстовом представлении.

Текст этикетки:

int code = key.codes[0];
key.label = String.valueOf(Character.toChars(code));

Коммит текста:

String text = String.valueOf( Character.toChars(code) );
InputConnection ic = getCurrentInputConnection();
ic.beginBatchEdit();
ic.commitText(text, 1);
ic.endBatchEdit();

Все работает нормально, но на Samsung-устройстве у меня проблема. Например:

Я использую код 0x1F601 для эмодзи «ухмыляющееся лицо с улыбающимися глазами».

Key.label выглядит так:

http://i.stack.imgur.com/f52db.png

а затем я нажимаю, в textView я вижу, что символ выглядит так:

http://i.imgur.com/SLaNOpt.png

Любое решение?

(извините за ссылки, но у меня нет 10 репутации для пост-изображения, лол)


person Drafff    schedule 13.02.2014    source источник
comment
Изображения идентичны.   -  person marsei    schedule 13.02.2014
comment
Исправлено. Теперь изображения отображаются правильно.   -  person Drafff    schedule 13.02.2014
comment
Сказать, что это исправлено, не очень хорошо, опубликуйте решение, которое вы сделали, и пометьте его как принятое.   -  person N Sharma    schedule 13.02.2014
comment
Я исправил ссылки на изображения, о которых идет речь, у меня нет решения   -  person Drafff    schedule 13.02.2014


Ответы (1)


Стандарт Unicode определяет кодовые точки для 722 эмодзи, но не предписывает какой-либо стиль или внешний вид. Он включает в себя краткое описание для каждого смайлика. Основываясь на этом описании, люди могут создавать свои собственные изображения или шрифты для отображения эмодзи.

Шрифт Android по умолчанию (Roboto, как и в 4.0+) включает монохромные смайлики, у Apple есть шрифт с цветными смайликами (ваше второе изображение) и так далее. Внешний вид просто зависит от шрифта, который используется для их отображения.

WhatsApp для Android использует те же красочные эмодзи, что и Apple.

Ваше первое изображение может быть результатом использования другого шрифта или растровых изображений, которые используются для замены эмодзи в этом приложении.

Если вы хотите изменить внешний вид своего смайлика, у вас есть как минимум два способа сделать это:

  • Используйте другой шрифт, например пользовательский шрифт, который вы встраиваете в свое приложение.
  • Используйте Spannables, чтобы заменить смайлики крошечными растровыми изображениями.

Дополнительная информация: https://github.com/delight-im/Emoji

person caw    schedule 19.03.2014
comment
Используйте другой шрифт, например пользовательский шрифт, который вы встраиваете в свое приложение. Знаете ли вы какой-нибудь способ использовать другой шрифт с клавиатуры? Используйте Spannables, чтобы заменить смайлики крошечными растровыми изображениями. InputConnection не поддерживает строки Spannables. - person Drafff; 20.03.2014
comment
InputConnection просто связывает клавиатуру с приложением, получающим текст, верно? Это не то место, где вы меняете шрифт или применяете Spannables. Только приложение может и должно контролировать внешний вид текста в своем EditText (и т. д.), который получает текст. Где изменить шрифт меток на клавиатуре, я не знаю, но это определенно должно быть возможно. У вас нет файлов раскладки для вашей клавиатуры? - person caw; 21.03.2014
comment
Да, я могу определить шрифт метки клавиатуры. Я пытаюсь определить стандартный шрифт и повторяю вопрос. Я попытаюсь определить какой-то конкретный шрифт. - person Drafff; 24.03.2014