EditText显示文字不一样

1. 问题描述:

在做登录界面时,需要用到两个EditText,一个用于输入用户名,一个用于输入密码;既然EditText输入的类型不一样,自然们可以在xml文件中使用inputType属性来设置其类型了。那么问题来了,用户名的inputType设置为phone,表示输入的是手机号,密码的inputType设置为textPassword,则会造成两个EditText的hint显示的字体不一致,看起来非常别扭。

未加入inputType的时候:

EditText显示文字不一样_第1张图片

加入inputType属性之后:

EditText显示文字不一样_第2张图片

2. 解决办法:

既然在xml文件中解决不了,那么就去Java代码中试一下,去掉xml文件中的inputType属性,改为在Java代码中去设置;

etUsername.setInputType(InputType.TYPE_CLASS_PHONE);
etPassword.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);

注意:设置密码框的输入类型时,前面必须加上InputType.TYPE_CLASS_TEXT,否则密码输入的还是明文


3. 追加问题:

但是,如果我们在xml文件中设置了textStyle属性为斜体或粗体至之类的,使用第二种方法还不足以完全解决字体类型不一致;下面是xml中设置完斜体的效果:

 EditText显示文字不一样_第3张图片

想起之前做类似QQ空间的评论效果时,【@某某回复@某某:巴拉巴拉****】一个text文本,它可以设置@某某在这一条黑色的text中显示成蓝色,用的是Spanner或者是Html;然后HTML中可以通过标签来设置文字的粗体,斜体。那么这边是不是可以直接在Java文件中通过HTML类来解决文字显示问题呢?

etUsername.setHint(Html.fromHtml("" + "input phone number" + ""));
etPassword.setHint(Html.fromHtml("" + "input your password" + ""));


看下最终的效果图:

EditText显示文字不一样_第4张图片 


你可能感兴趣的:(EditText显示文字不一样)