首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >联想设备中RTL语言EditText.setText()方法中的奇怪缺陷

联想设备中RTL语言EditText.setText()方法中的奇怪缺陷
EN

Stack Overflow用户
提问于 2018-04-11 08:37:30
回答 2查看 348关注 0票数 10

我收到了客户关于我在联想设备上的安卓应用程序的bug报告

我注意到,当我将应用程序的语言环境设置为RTL语言(如波斯)或将Android语言改为波斯时,EditTexts或TextviewsetTex()方法在原始字符串的开头和结尾插入两个额外字符。

例如:

代码语言:javascript
复制
String myString1 = "original string";
int length1 = myString1.length(); // length1 is 15

myEditText.setText(myString1);
String myString2 = myEditText.getText().toString();
int length2 = myString2.length(); // length2 is 17

这个问题只发生在联想设备上。setText()方法在LEFT-TO-RIGHT OVERRIDE (U+202D)模式下添加LEFT-TO-RIGHT OVERRIDE (U+202D),在字符串末尾添加POP DIRECTIONAL FORMATTING (U+202C)。这在我的应用程序中造成了很大的问题。我有很多setText()方法。解决这个问题有什么简短的办法吗?

设备信息: Lenovo Tablet TB-8504X, Android 7.1.1

更新:Android OS的问题吗?我能找到这个装置的任何修复方法吗?

EN

回答 2

Stack Overflow用户

发布于 2018-04-19 05:25:09

.length()和.getText().length()是完全相同的

然而, .getText().toString().length()在某些情况下是不同的。

首先,它不是String,而是CharSequence。因此,它基于格式,这可能会影响计算的大小。

票数 3
EN

Stack Overflow用户

发布于 2018-04-19 07:41:01

对此最好的解决方案是在注释中说明,即使用.trim()。但根据你说的,

我需要更短的解决方案。我必须添加很多trim()方法或类似的东西

似乎您的问题是定位每个用户并将.trim()添加到其中所花费的时间。如果是这样,只需使用IDE的替换函数即可。您可以通过指定整行来避免不必要的更改。

CTRL + SHIFT + R

myEditText.getText().toString()

最后加上空格以避免类似于myEditText.getText()、.toString()、.lenght()之类的东西

代之以

myEditText.getText().toString().trim()

另一个是使用;的行

myEditText.getText().toString();

替换为

myEditText.getText().toString().trim();

因此,这涵盖了这个编辑文本的值用法的所有用途。希望这能有所帮助

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49770358

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档