一、关于Android下EditText中的hint英文字体变化不统一的问题
经查找,hint字体受EditText的text字体影响,即受android:typeface的影响。
android:typeface有三个取值:“sans”,“serif”,“monospace”,而默认普通EditText是Sans。
源码中,发现在EditText的初始化中有这么一段:
if (password) {
setTransformationMethod(PasswordTransformationMethod.getInstance());
typefaceIndex = MONOSPACE;
}
由此(EditText 密码框属性 android:password="true")得知,密码框初始化会强制设置字体为MONOSPACE。
所以要解决设置密码可见的时候,英文字体不统一的问题,可按如下代码实现:
eyeCb.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
if (isChecked) {
pwdEt.setInputType(InputType.TYPE_CLASS_NUMBER |InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
pwdEt.setTypeface(Typeface.SANS_SERIF);
} else {
pwdEt.setInputType(InputType.TYPE_CLASS_NUMBER |InputType.TYPE_NUMBER_VARIATION_PASSWORD);
pwdEt.setTypeface(Typeface.SANS_SERIF);
}
}
});
二、Android5.0后Button英文默认大写
如标题所述,Android5.0之后Button的text如果是英文的话,默认是全部大写。
解决方法:手动添加属性 android:textAllCaps="false"
<Button
android:id="@+id/login_sms_code_btn"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_gravity="center"
android:layout_marginLeft="@dimen/size_10dp"
android:layout_weight="4"
android:background="@drawable/selector_login_btn_9"
android:text="Security code"
android:textColor="@color/white"
android:textAllCaps="false"
android:textSize="@dimen/text_size_14sp"
/>