- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我收到了客户关于我在 Lenovo 设备中的 Android 应用程序的错误报告。
我注意到,当我将应用程序的语言环境设置为 RTL
语言(如 Persian)或将 Android 操作系统的语言更改为 Persian 时, EditText
或 Textview
的 setTex()
方法在原始字符串的开头和结尾插入两个额外的字符。
例如:
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
此问题仅发生在 Lenovo 设备上。 setText()
方法在开头添加LEFT-TO-RIGHT OVERRIDE (U+202D)
和POP DIRECTIONAL FORMATTING (U+202C)
在 RTL 模式下我的字符串的末尾。这会导致我的应用程序出现大问题。我有很多 setText()
方法。有解决这个问题的短期解决方案吗?
设备信息: Lenovo Tablet TB-8504X, Android 7.1.1
更新:Android 操作系统
有问题吗?我能为该设备找到任何修复方法吗?
最佳答案
.length()
和 .getText().length()
它们是相同的
但是 .getText().toString().length()
在某些情况下是不同的。
首先,它不是String
,而是CharSequence
。因此,它基于格式化,这可能会影响计算量。
关于android - 联想设备中 RTL 语言的 EditText.setText() 方法中的奇怪错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49770358/
我创建了一个持续在后台运行并显示 float 叠加层 TextView 的应用程序(通过使用权限 android.permission.SYSTEM_ALERT_WINDOW)。 我在 Lenovo
在近期举行的 2020 全球虚拟现实峰会中,联想发布了与 Pico 合作开发 Mirage VR S3 一体机。 这款 VR 一体机采用 4K 显示屏,提供 101 度场视角,配备高通骁龙 835
我是一名优秀的程序员,十分优秀!