背景:

    1. 按照设计师指定在EditText中要显示的Hint太长了,导致无法显示完整(hint内容:取现最低限额100元),效果图如下:

     支持为EditText指定任意字体大小的Hint_封装

    2. EditText不支持设置hint的字体大小(只能和输入框字体一致),后来在网上找到通过SpannableString设置hint,就能指定字体大小了。代码如下:

/**
* 设置EditText的hint字体大小
* @param editText EditText控件
* @param hintText hint内容
* @param size hint字体大小,单位为sp
*/
public static void setEditTextHintWithSize(EditText editText, String hintText, @Dimension int size) {
if (!TextUtils.isEmpty(hintText)) {
SpannableString ss = new SpannableString(hintText);
//设置字体大小 true表示单位是sp
AbsoluteSizeSpan ass = new AbsoluteSizeSpan(size, true);
ss.setSpan(ass, 0, ss.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
editText.setHint(new SpannedString(ss));
}
}

    3.但是这个方案在小米手机上出现了光标无法对齐的问题

        问题截图如下:

支持为EditText指定任意字体大小的Hint_.net_02

     出现问题机型(没有验证小米所有机型):

      1)小米6

      2)红米Note 4X

解决方案:

1.在网上找了各种方案,其中一种是定制光标,但是效果还是有问题。

2.最终在同事的建议下,采用在EditText上覆盖一层TextView的方式,为了方便复用,对控件进行了封装。

调用方式:

    new EditTextHint(this, "RelativeLayout中为EditText添加hint", R.id.editText).showHint();

源代码:​https://github.com/cxyzy1/EditTextHint.git​

附录:

在EditText中设置hint的大小和颜色,光标粗细和颜色

EditText 代码设置光标颜色(反射)

小米手机EditText光标问题