如何以编程方式将AppCompatEditText设置为inputType textPassword

时间:2018-03-08 12:30:02

标签: android

如何以编程方式将AppCompatEditText设置为inputType textPassword

我已经尝试了所有可能的方法来解决这个问题:

pass_et = (AppCompatEditText) loginView.findViewById(R.id.pass_et);
     pass_et.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
            pass_et.setSelection(pass_et.getText().length());
            pass_et.setTransformationMethod(PasswordTransformationMethod.getInstance());
            pass_et.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);

    pass_et.setTypeface(Typeface.DEFAULT);
            pass_et.setTransformationMethod(new PasswordTransformationMethod());

     pass_et.setTypeface(Typeface.createFromAsset(getApplicationContext().getAssets(), "fonts/Lato-Italic.ttf"));       pass_et.setTransformationMethod(new PasswordTransformationMethod());

    pass_et.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                     pass_et.setTypeface(Typeface.DEFAULT);
            pass_et.setTransformationMethod(new PasswordTransformationMethod());
                    pass_et.setInputType(

                            InputType.TYPE_TEXT_VARIATION_PASSWORD);

                    pass_et.setTransformationMethod(PasswordTransformationMethod.getInstance());
                }
            });

我也尝试过:

pass_et.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
mEdit.setTransformationMethod(PasswordTransformationMethod.getInstance()); 

2 个答案:

答案 0 :(得分:1)

请勿拨打setTransfromationMethod(PasswordTransformationMethod.getInstance()),这是setInputType的一部分。按住Ctrl并单击方法名称以查看源代码。

将输入类型设置为密码时,字体会自动设置为等宽字体。因此,在 setInputType之后设置字体

由于您已经需要在设置完所有内容后调用setTypeface,因此您也可以使用XML属性。然后在代码中设置字体。

答案 1 :(得分:0)

我以此解决了我的问题:

doOnTextChanged { text, start, count, after ->
            inputType = EditorInfo.TYPE_CLASS_TEXT or EditorInfo.TYPE_TEXT_VARIATION_PASSWORD
            setSelection(text?.length ?: 0)
}