Android解决hint和text的文字大小冲突

一、背景

需求:输入框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文字上方了~:

Android解决hint和text的文字大小冲突_第1张图片

这样显示有点丑了,那怎么办呢?

方法②:利用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~~~

你可能感兴趣的:(Android解决hint和text的文字大小冲突)