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>
如何替换...
?只是字面意义上的&#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 建议我(我不知道为什么)用新的&#8230;
是 "…" 的 unicode,所以只需替换它即可。最好将其作为一个字符/符号而不是三个点。
【讨论】:
为什么“更好”?在将文本提供给翻译人员时,这会使事情变得复杂。我们能以某种方式杀死这个愚蠢的警告吗?谢谢 @swinefeaster 很高兴知道 :) 但由于它们是付费的,它们也是可教的 :) @swinefeaster 它“更好”的部分原因是它不会中断(“...”可能会在第二个时期出现),理论上语言可以以不同的方式呈现它们(许多亚洲语言放在它们在中间并且它们更宽(匹配字符宽度))。不间断在任何地方都很有用,但我不知道 Android 在其他语言中正确渲染它们,我也不知道为此目的的 UTF 字符。 拥有“...”会导致可访问性问题。 Android Talkback 将“Loading...”读作“Loading 3 period” 看来我的评论不太清楚。使用“正在加载...”(3 个点)导致 Talkback 说“正在加载 3 个周期”使用“正在加载…” (省略号)导致 Talkback 说“正在加载”[这很好..] 所以,我们应该始终使用省略号【参考方案5】:这个答案与这个问题间接相关:
在我的情况下,textView1.setTextView("done&#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】:为了简短起见,只需将&#x2026;
放在适当的位置...
Link to XML character Entities List
在 html 的 Unicode 列中查找名为 hellip 的行【讨论】:
我最初想知道为什么当 Eclipse 警告说要使用&#8230;
时您使用 &#x2026;
但您的链接确实回答了这个问题。即x表示十六进制值,十进制的8230是十六进制的2026。
在哪里放置这个…这个的任何位置。
@TusharPandey- 如果你的代码是 以上是关于Android 将“...”替换为省略号的主要内容,如果未能解决你的问题,请参考以下文章
多行文本溢出显示省略号(…) text-overflow: ellipsis
Android 12.0 Toast消息框上限为两行文本(超出显示省略号)并且在文本左边显示应用图标