EditText 设置 android:inputType="...Password"时字体样式变化
android 源码(API 28) 中 :
EditText 继承自TextView,溯源在TextView中有段代码:
final boolean isPassword = password || passwordInputType || webPasswordInputType
|| numberPasswordInputType;
final boolean isMonospaceEnforced = isPassword || (mEditor != null
&& (mEditor.mInputType
& (EditorInfo.TYPE_MASK_CLASS | EditorInfo.TYPE_MASK_VARIATION))
== (EditorInfo.TYPE_CLASS_TEXT | EditorInfo.TYPE_TEXT_VARIATION_PASSWORD));
if (isMonospaceEnforced) {
attributes.mTypefaceIndex = MONOSPACE;
}
如果Edittext inputType = "...Password"的话则会自动设置:
attributes.mTypefaceIndex = MONOSPACE;
故有两种解决方式: 1.在有密码输入框同页面的Edittext加上如下属性保持输入框字体一致: android:typeface="monospace" 2.在代码中还原EditText的typeface属性: etPhone.setTypeface(Typeface.SANS_SERIF); etPwd.setTypeface(Typeface.SANS_SERIF);