Android下EditText中的字体不统一问题

好久没写,今天心情好略记下解决的某bug

在一个登录界面有帐号和密码两个EditText,但是却发现两个EditText的hint的英文字体不同,看着极不协调。但是两个EditText都没有特意设置过hint的字体啊···

经实验,把密码栏的android:password="true"属性去掉后字体变一样。应该是这个属性的影响。

经查,hint字体受EditText的text字体影响,即受android:typeface的影响。android:typeface有三个取值:“sans”,“serif”,“monospace”,而缺省的话普通EditText是Sans,想必密码框的缺省不同的原因。然后将两个EditText设置相同typeface,但是发现能正常改变帐号栏的hint字体,但是密码栏hint字体一直保持是monospace不变。

果断看源码,发现在EditText的初始化中有这么一段:

if (password) {

    setTransformationMethod(PasswordTransformationMethod.getInstance());

    typefaceIndex = MONOSPACE;

}

果然密码框初始化会强制设置字体为MONOSPACE,这样解决就简单了,在代码实现中加上:

idEdit.setTypeface(Typeface.SANS_SERIF);

passEdit.setTypeface(Typeface.SANS_SERIF);

这样字体就和谐了~


EditText password = (EditText) findViewById(R.id.register_password_text);
password.setTypeface(Typeface.DEFAULT);
password.setTransformationMethod(new PasswordTransformationMethod());

此外需要去除xml中的android:password="true"语句


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值