Android 将“...”替换为省略号

Posted

技术标签:

【中文标题】Android 将“...”替换为省略号【英文标题】:Android Replace "..." with ellipsis character 【发布时间】:2012-01-22 02:38:40 【问题描述】:

自 AVD 工具 16 以来,我收到此警告:

Replace "..." with ellipsis character (..., …) ?

在我的 strings.xml 中

在这一行

 <string name="searching">Searching...</string>

如何替换...?只是字面意义上的&amp;#8230;

有人能解释一下这种编码吗?

【问题讨论】:

作为说明,我注意到一些 android 自己的翻译字符串文件使用......本身而不是 Unicode 实体。鉴于 Android XML 文件通常以 UTF-8 编码,我认为没有理由不使用字符本身而不是潜在的深奥的 Unicode 实体,尤其是现在大多数文字处理程序都支持自动更正“...”到“ ...”(Microsoft Word 默认会这样做,我上次检查过)。 实际上是三个点(ASCII 46 / 0x26)吗?还是 ASCII 133(一个字符)? 在另一个 SO 问题的答案中,有比“更改 ... 为 Unicode,因为它更好”更好的解释。 ***.com/a/27984145/973919 简而言之,它可以防止三个点在多行文本上被拆分(仅显示 1 或 2 个点),并且在某些排版中,看到 3 个点看起来很糟糕。 【参考方案1】:

在我看来,最好不要像某些人建议的那样忽略它。使用 Android Studio 更正它(而不是实际输入字符代码),该工具会将三个点替换为三点 unicode 字符。不会让翻译人员等感到困惑。

【讨论】:

【参考方案2】:

Android Studio 中的快速修复快捷键默认为Alt + Enter

【讨论】:

【参考方案3】:

如果您使用的是 Eclipse,那么您始终可以执行以下操作:

右键单击警告 选择“快速修复”(快捷键默认为Ctrl + 1) 选择“替换为建议的字符”

这应该用省略号的正确 Unicode 字符替换您的三个点。

请注意:最新版本的 ADT (21.1) 有时无法正确执行替换操作,但早期版本没有问题。

这是角色:

【讨论】:

这对我有用!然而,除了警告消失之外没有发生任何“视觉”,我正在运行 ADT 22.2.1。但我想这就是它的工作原理:) 对我没用。 Eclipse 建议我(我不知道为什么)用新的 标签覆盖 标签。 如果您没有准确地突出显示正确的区域,Eclipse 有时会这样做。在它真正提出正确的建议之前,我发现自己强调并尝试快速修复两到三遍。【参考方案4】:

&amp;#8230; 是 "" 的 unicode,所以只需替换它即可。最好将其作为一个字符/符号而不是三个点。

【讨论】:

为什么“更好”?在将文本提供给翻译人员时,这会使事情变得复杂。我们能以某种方式杀死这个愚蠢的警告吗?谢谢 @swinefeaster 很高兴知道 :) 但由于它们是付费的,它们也是可教的 :) @swinefeaster 它“更好”的部分原因是它不会中断(“...”可能会在第二个时期出现),理论上语言可以以不同的方式呈现它们(许多亚洲语言放在它们在中间并且它们更宽(匹配字符宽度))。不间断在任何地方都很有用,但我不知道 Android 在其他语言中正确渲染它们,我也不知道为此目的的 UTF 字符。 拥有“...”会导致可访问性问题。 Android Talkback 将“Loading...”读作“Loading 3 period” 看来我的评论不太清楚。使用“正在加载...”(3 个点)导致 Talkback 说“正在加载 3 个周期”使用“正在加载…” (省略号)导致 Talkback 说“正在加载”[这很好..] 所以,我们应该始终使用省略号【参考方案5】:

这个答案与这个问题间接相关:

在我的情况下,textView1.setTextView("done&amp;#8230"); 显示了一些方框/中文字符。后来,我检查了fileformat.info的值代表什么,我发现这是一个汉字符。 那么该怎么办?我搜索了“fileformat.info 椭圆字符”,然后当我看到它的值时,一切都变得清晰了;

UTF-16 (hex) 0x2026 (2026)

UTF-16 (decimal) 8,230

因此,您可以使用多种编码来表示一个字符(例如,十进制中的 10 表示为十六进制中的 A),因此了解何时编写 unicode 字符以及接收函数如何对其进行解码非常重要。如果它解码为十进制值,那么你必须提供十进制值,如果它接受十六进制,那么你必须提供十六进制。

在我的例子中,setTextView() 函数接受十进制编码值,但我提供的是十六进制值,所以我得到了错误的字符。

【讨论】:

【参考方案6】:

您的问题的解决方案是:

Go to Window -> Preferences -> Android -> Lint Error Checking

然后搜索“省略号”。将警告级别更改为“Info”或“Ignore”。

【讨论】:

这些建议确实有道理。简单地忽略它们只是一个解决方案,如果你真的确定你在做什么。在这种情况下,替换是有意义的,所以忽略警告是不好的。 谢谢!正是我想要的。这就是做各种相关事情的地方(我不需要电脑来告诉我如何拼写、大写或标点符号)。很有用! 这不是忽略警告的好选择。您应该修复警告以获得更好的结果。 @ScottBiggs 公平地说,如果计算机告诉你拼写、大写或标点错误,那么你应该修复它。 Lints 在这方面很有用,我建议不要禁用它们。【参考方案7】:

为了简短起见,只需将&amp;#x2026; 放在适当的位置...

Link to XML character Entities List

html 的 Unicode 列中查找名为 hellip 的行

【讨论】:

我最初想知道为什么当 Eclipse 警告说要使用 &amp;#8230; 时您使用 &amp;#x2026; 但您的链接确实回答了这个问题。即x表示十六进制值,十进制的8230是十六进制的2026。 在哪里放置这个…这个的任何位置。 @TusharPandey- 如果你的代码是 Searching... 那么它看起来像 Searching…字符串>

以上是关于Android 将“...”替换为省略号的主要内容,如果未能解决你的问题,请参考以下文章

用Permalink替换摘录省略号

多行文本溢出显示省略号(…) text-overflow: ellipsis

NGUI中UILabel用省略号替换超出显示区域的内容

Android 12.0 Toast消息框上限为两行文本(超出显示省略号)并且在文本左边显示应用图标

Android 12.0 Toast消息框上限为两行文本(超出显示省略号)并且在文本左边显示应用图标

Android 文字过长TextView如何自动截断并显示成省略号