如何以编程方式将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());
答案 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)
}