【问题标题】:Android TextView doesn't display Sound Recording Copyright Symbol "℗"Android TextView 不显示录音版权符号“℗”
【发布时间】:2014-06-03 01:51:44
【问题描述】:

我正在开发一个显示文本并从 API 播放音频的应用程序。它还需要显示该文本和音频的版权信息;此信息是从同一个 API 中检索的。

许多音频版权包含“℗”符号,也称为录音版权符号:

http://en.wikipedia.org/wiki/Sound_recording_copyright_symbol

但是,当我从 API 检索文本并将其放入 TextView 时,“℗”符号不会出现。正常的版权符号 (©) 显示得很好。

有没有人遇到过这样的事情?有解决办法吗?

【问题讨论】:

  • 假设“从 API 检索的文本”在 HTML 或 Unicode U+2117 中使用 ℗,那么您使用的字体可能没有该符号。
  • 这似乎是最有可能的解释。当然,我没有使用任何特殊字体,也就是说Android的内置字体没有它。这意味着我必须在我的应用程序中捆绑一个自定义字体才能显示这个字符。似乎不值得。
  • 我在我的 Ubuntu 机器上安装了 Droid Sans 和 Droid Sans Mono 作为桌面字体,并且 U+2117 出现在它们的字符映射中。我没有检查 Roboto,因为我没有安装它。不过,现在我想一想,通常缺少 Unicode 字形会导致一个小的矩形占位符,而不是什么都没有。你确定这个角色是按照你的 API 的预期来的吗?这是您正在解码的 HTML,还是您正在获取的 Unicode 字符串,还是其他?
  • 是的,我使用调试器检查了API返回的字符串,字符肯定在那里。它不是 HTML;只是一个简单的 Unicode 字符串。我目前的工作解决方案是使用 String.replace() 将字符替换为“(P)”。这不太理想,但至少可以显示。
  • 在模拟器 (2.3.3) 上,我确实看到了矩形占位符,但在我的手机 (4.4.2) 上却没有,只是一个空白。我发现似乎对两者都显示正常的最接近的字符是 HTML 中的 U+24DFⓟ。它是一个圆圈中的小写字母 P。大写的 P 只会在我的手机上显示为 P..

标签: android unicode textview


【解决方案1】:

你可以试试这样的方法。比如

首先在 res/values/string.xml 中创建字符串值。例如

<string name="copyright">\u2117 2011 copyright</string>

然后以这种方式从您的活动课程中获取此信息。比如

 TextView tvHeader = (TextView) findViewById(R.id.tvHeader);
            tvHeader.setText(getResources().getString(
                    R.string.copyright));

【讨论】:

  • 由于是 XML,而不是 JSON,&amp;#x2117; 的工作机会更高。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-07-13
  • 2012-08-08
  • 2013-04-26
  • 2021-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多