RTL密码字段Android

时间:2016-08-02 20:33:55

标签: android right-to-left

我已尝试过这篇文章中的所有内容:Android RTL password fields?

但没有任何帮助我。

问题:当用户的语言环境是阿拉伯语(RTL)时,我希望他能够用他的语言输入密码。但是,当我将inputType分配给textPassword时,无论我分配什么,它都无法工作并强制它进入LTR。

我尝试过分配gravitytextAlignmentlayoutDirection,我甚至以编程方式尝试过,但没有任何效果。

除了PASSWORD之外,所有其他文本字段都可以正常工作。这个错误/问题是否有解决方法?

3 个答案:

答案 0 :(得分:6)

我在这里说服你停止寻找答案。真的很少有人使用阿拉伯字符设置密码(有时甚至是UserName)。这是因为大多数密码系统在处理非拉丁字符方面非常糟糕。这些系统通常假定密码是ASCII而不是Unicode,特别是旧的DB系统。此外,请记住,有时用户会发现将键盘切换到另一种语言布局有些困难。以前在Windows登录中就会出现此问题。

这些历史和长期兼容性问题阻碍了大多数人在密码中使用非拉丁字符。我已经活得足够多,并且处理了很多不同的人(真的很多人......没有电脑技能的人,使用阿拉伯语界面设备的人,英语为零的人等等),我还没有听过有人说过他的阿拉伯字符密码......不是在90年代后期甚至不是这个时代。由于大多数用拉丁字符设置密码,我相信所有登录界面都应该在LTR中“布局”并且也保持对齐。

另一个密码字段将文本转换为星号,因此从右到左和从左到右开始之间没有区别(遗憾地标记下来不支持对齐,所以请点击运行):

<p align="right">******</p>
<p align="left">******</p>

More technical info here

答案 1 :(得分:5)

您可以通过在Edittext XML文件中设置一个属性,根据您的语言(阿拉伯语,乌尔都语或英语)将文本对齐从左到右(LTR)或从右到左(RTL)设置:

android:inputType="textPassword"
android:textAlignment="viewStart"

答案 2 :(得分:0)

您是否尝试过以下操作?:

XML:

android:ellipsize="end"

爪哇:

textview.setTextDirection(View.TEXT_DIRECTION_RTL);

textview.setTextDirection(View.TEXT_DIRECTION_ANY_RTL);