如何以编程方式设置EditText的输入类型?我尝试:

mEdit.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);

这似乎没有任何效果。


当前回答

password.setInputType(InputType.TYPE_CLASS_TEXT |
InputType.TYPE_TEXT_VARIATION_PASSWORD);

此外,你必须小心光标移动到editText的起始点 调用此函数后,请确保再次将光标移动到结束点。

其他回答

尝试将此添加到布局中的EditText/TextView标签

android:password="true"

编辑:我刚刚重读了你的帖子,也许你需要在施工后这样做。我不明白你的片段为什么不管用。

我的回答不是对这个问题的直接回答。对于大多数情况,上述答案中的任何一个都应该是正确的。然而,没有一个对我的情况有帮助。

我在我的项目中有一个自定义的ViewGroup,其中包含标题的文本和EditText。这个EditText接收文本,数字,密码,电话等取决于案件和正在使用的地方。视图组的Caller应该告诉输入类型是什么。

重要提示:设置inputType应该是EditText的最后一组(或者至少它必须在设置EditText的Text之后),否则,没有任何效果。

我知道期望的答案是Java。但这里是我的2美分的建议,总是尝试处理XML中的视图相关的东西(至少基本的东西),所以我宁愿使用XML属性,而不是在java中处理这个用例

    <EditText
     android:inputType="textPassword"/>

隐藏:

edtPassword.setInputType(InputType.TYPE_CLASS_TEXT);
edtPassword.setTransformationMethod(null);

显示:

edtPassword.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);                    
edtPassword.setTransformationMethod(PasswordTransformationMethod.getInstance());

我已经解决了所有问题

.setInputType(InputType.TYPE_CLASS_NUMBER);

为看清楚的数据和

.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_VARIATION_PASSWORD);

看这些点(如果数据是数字,它不是其他类的选择)