一、背景
需求:输入框InputText TextSize大于Hint TextSize。
二、做法
先固定InputText TextSize = 23
①使用setHint(SpannableString)改变Hint文字大小
SpannableString ss = new SpannableString("输入金额");
AbsoluteSizeSpan ass = new AbsoluteSizeSpan(16, true);
ss.setSpan(ass, 0, ss.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
editText.setHint(new SpannedString(ss));
完成,测试后发下一个有以上的Bug,光标停在了Hint文字上方了~:
这样显示有点丑了,那怎么办呢?
方法②:利用TextWatcher,判断是否输入文字来显示的是hint还是text,动态设置文字的小大
editText.addTextChangedListener(newTextWatcher() {
@Override public void beforeTextChanged(CharSequence s,intstart,intcount,intafter){
editText.setTextSize(16);
}
@Override public void onTextChanged(CharSequence s,intstart,intbefore,intcount){
if(TextUtils.isEmpty(s)) {
editText.setTextSize(16);
}else{
editText.setTextSize(23);
}
}
@Override public void afterTextChanged(Editable s){}
方法②成功解决了以上问题,当然还有一个方式是:在EditText上放一个TextView来当成Hint,也可以达到目的O(∩_∩)O~~~