背景:
EditText能设置hint的颜色,但是却不能设置hint的字体大小,导致hint的字体和text的字体是一样的。但有时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));
}
}
调用样例:
EditText控件:editText
hint内容:测试hint
hint字体大小:18
setEditTextHintWithSize(editText,"测试hint",18);
注意:上面的“hint字体大小”如果不是直接传入dp数字值,而是从dimension中读取的话,一定要传入dp值,而不是像素值。下面给出从dimension中传入字体大小的样例(dimension key为:edit_text_size):
setEditTextHintWithSize(editText,"测试hint",(int)(getResources().getDimension(R.dimen.edit_text_size)/getResources().getDisplayMetrics().density));
但是此方案在小米部分手机上会有问题,更完善的方案见:https://www.jianshu.com/p/c5c10e5daa2e
安卓开发技术分享: https://www.jianshu.com/p/442339952f26