2016-08-02 105 views
4

我已经在这个岗位尝试了一切:Android RTL password fields?RTL密码字段的Android

但没有什么帮助了我。

问题:当用户的语言环境是阿拉伯语(RTL)时,我希望他在用他的语言输入密码时感到舒适。但是,当我将inputType指定为textPassword时,无论我分配什么,它都不起作用,并强制它变为LTR。

我试过指定gravity,textAlignment,layoutDirection,我甚至用编程方式试过,但没有任何工作。

除了密码之外,其他所有文本字段都可以正常工作。有没有解决这个bug /问题的方法?

回答

6

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

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

另一件事密码字段将文本转换为星号,所以从右到左的开始和从左到右的开始没有区别(可惜标记不支持对齐,所以请点击运行) :

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

More technical info here

+0

我已经强迫用户用英文输入他的密码。感谢您的解释' –

+0

现在这是正确的答案 –

0

你试过以下?:

XML:

android:ellipsize="end" 

的Java:

textview.setTextDirection(View.TEXT_DIRECTION_RTL); 

textview.setTextDirection(View.TEXT_DIRECTION_ANY_RTL); 
+1

不,它仍然不起作用。 –

1

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

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