【问题标题】:Cannot display a Unicode character (Emoji) in an Android TextView with large text: "Font size too large to fit in cache"无法在带有大文本的 Android TextView 中显示 Unicode 字符(表情符号):“字体太大,无法放入缓存”
【发布时间】:2016-05-16 21:50:14
【问题描述】:

我正在尝试在 TextView 中显示单个 Unicode 字符(表情符号),并且文本大小较大:

mEmojiTextView = (TextView) findViewById(R.id.emoji_text_view);
mEmojiTextView.setTextSize(200);
mEmojiTextView.setText("\uD83D\uDE01");

字符没有出现在屏幕上,我在 logcat 中得到这个错误:

E/OpenGLRenderer﹕ Font size too large to fit in cache. width, height = 545, 513

有效的最大尺寸是

mEmojiTextView.setTextSize(150);

并出现表情符号字符。它不像是全屏或任何东西,在这个文本大小下,屏幕上有足够的空间容纳大约 6 个表情符号字符。

我在运行 Android 5.1.1 的 LG Nexus 5 手机上运行测试,分辨率为 1080 x 1920。我正在使用 minSdkVersion 11targetSdkVersion 23

我尝试了在 StackOverflow 和其他地方找到的许多解决方法:

mEmojiTextView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);

<TextView android:layerType="software" ... />

<activity android:hardwareAccelerated="false" ... />

没有任何作用。

有什么方法可以让它工作吗?

【问题讨论】:

  • 尝试和android项目的value字符串资源一起使用
  • 有什么理由不能在 textView 上使用 scaleX/scaleY 而不是增加字体大小?
  • @GilMoshayof 试过 (android:scaleX="4" android:scaleY="4" android:textSize="50sp"),不显示字符,并给出相同的 logcat 错误: "字体太大,无法放入缓存。width, height = 722, 679"
  • @GilMoshayof 如果我添加 android:layerType="software" 它终于可以工作了(!),并且表情符号出现了,但它看起来像素化了,就像被放大了很多次的位图图像。
  • 如果您将 textview 包装在相对布局或其他容器中,然后按比例放大容器?

标签: android unicode textview emoji large-text


【解决方案1】:

这是一个安卓问题Issue with emoji with 200sp size 目前没有办法解决,如果TextView有表情符号,请不要设置超过199的大小

【讨论】:

  • 感谢您的链接。这个问题似乎仍然没有解决方案。
猜你喜欢
  • 2019-12-16
  • 2011-09-09
  • 2014-10-11
  • 1970-01-01
  • 2011-12-06
  • 1970-01-01
  • 2016-08-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多