支持为EditText指定任意字体大小的Hint

背景:

  1. 按照设计师指定在EditText中要显示的Hint太长了,导致无法显示完整(hint内容:取现最低限额100元),效果图如下:
image.png
  1. 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_第1张图片
image.png

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

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的大小和颜色,光标粗细和颜色:https://blog.csdn.net/qq_24697659/article/details/49800419
EditText 代码设置光标颜色(反射):https://blog.csdn.net/qq_30247473/article/details/50422245
小米手机EditText光标问题:https://www.jianshu.com/p/c92299664933

安卓开发技术分享: https://www.jianshu.com/p/442339952f26

支持为EditText指定任意字体大小的Hint_第2张图片

你可能感兴趣的:(支持为EditText指定任意字体大小的Hint)