背景:
- 按照设计师指定在EditText中要显示的Hint太长了,导致无法显示完整(hint内容:取现最低限额100元),效果图如下:
- 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.但是这个方案在小米手机上出现了光标无法对齐的问题,问题截图如下:
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
网友评论