Vid*_*nes 10 android emoji android-api-levels
通过代码,我可以创建一个按钮,将这3个表情符号插入到文本中:⚽️
但是,在用户点击按钮的许多手机上,问题是⚽️显示为[X] [X] [X].或者更糟糕的是,它只显示三个空白区域.
我想在没有正确显示表情符号的Android设备上禁用和隐藏我自己的内置表情符号键盘.如果设备有表情符号支持,是否有人知道或有关于如何检测代码的提示?
我已经读过android 4.1支持表情符号,但这不是我的经验....
Jas*_*ore 10
我自己刚刚为这个问题实现了一个解决方案.Android的好处在于它是开源的,所以当你遇到这些问题时,你很有可能找到一种方法来帮助你.
在Android开源项目中,您可以找到一种方法,Paint.hasGlyph用于检测给定表情符号是否存在字体.但是,由于此方法在API 23之前不可用,因此它们也会测试渲染并将结果与"豆腐"的宽度进行比较(您在帖子中提到的[x]字符.)
这种方法还有其他一些失误,但它应该足以让你开始.
谷歌来源:
基于Jason Gore回答:
例如,create boolean canShowFlagEmoji:
private static boolean canShowFlagEmoji() {
Paint paint = new Paint();
String switzerland = "\uD83C\uDDE8\uD83C\uDDED"; // Here enter Surrogates of Emoji
try {
return paint.hasGlyph(switzerland);
} catch (NoSuchMethodError e) {
// Compare display width of single-codepoint emoji to width of flag emoji to determine
// whether flag is rendered as single glyph or two adjacent regional indicator symbols.
float flagWidth = paint.measureText(switzerland);
float standardWidth = paint.measureText("\uD83D\uDC27"); // U+1F427 Penguin
return flagWidth < standardWidth * 1.25;
// This assumes that a valid glyph for the flag emoji must be less than 1.25 times
// the width of the penguin.
}
}
Run Code Online (Sandbox Code Playgroud)
然后在代码中,每当您需要检查表情符号是否可用时:
if (canShowFlagEmoji()){
// Code when FlagEmoji is available
} else {
// And when not
}
Run Code Online (Sandbox Code Playgroud)
当你点击细节时,你可以到这里表情符号的代理人.
| 归档时间: |
|
| 查看次数: |
3291 次 |
| 最近记录: |