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

mEdit.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);

这似乎没有任何效果。


当前回答

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

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

其他回答

要以编程方式设置EditText的输入类型,必须指定输入类类型为文本。

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

根据TextView文档,android:password的编程版本是setTransformationMethod(),而不是setInputType()。比如:

mEdit.setTransformationMethod(PasswordTransformationMethod.getInstance());

应该能行。

取消隐藏密码:

editText.setInputType(
      InputType.TYPE_CLASS_TEXT|
      InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD
);

再次隐藏密码:

editText.setTransformationMethod(PasswordTransformationMethod.getInstance());

这可能对像我这样想在密码和自由文本模式之间切换的人有帮助。我尝试使用建议的输入法,但它只在一个方向上工作。我可以从密码切换到文本,但无法还原。对于那些试图处理切换(例如显示密码复选框)使用

       @Override
        public void onClick(View v)
        {
            if(check.isChecked())
            {
                edit.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
                Log.i(TAG, "Show password");
            }
            else
            {
                edit.setTransformationMethod(PasswordTransformationMethod.getInstance());
                Log.i(TAG, "Hide password");
            }
        }

我不得不承认这是解决方案。真希望我几个小时前就发现了!

field.setInputType(InputType.TYPE_CLASS_TEXT);