起因:在写一个输入框的时候,需要用到EditText,我希望可以点击的时候hint消失,并且点击外部的时候,焦点恢复,如果有输入内容则保持,如果没有输入内容就恢复hint
解决方案:
1.xml中,设置一个背景id,并在逻辑文件中获取到这个背景ID。点击这个外部背景的时候,就设置焦点消失。
2.设置点击editText时获取焦点
3.设置FocusChange的监听事件,如果没有焦点,则设置为默认hint,有焦点设置hint为空
关键代码:
//添加获取到的hint的字符串
final String getHint = editText.getHint().toString();
//背景id点击事件,设置focusable(false)
background_Id.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
editText.setFocusable(false);
}
});
//editText重新点击获取到焦点,需要四个步骤
editText.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
editText.setFocusable(true);
editText.setFocusableInTouchMode(true);
editText.requestFocus();
editText.findFocus();
}
});
//editText设置焦点改变的监听事件,若有焦点,设置hint为空,没有焦点设置hint为
editText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View view, boolean hasFocus) {
if (hasFocus){
editText.setHint("");
}else {
editText.setHint(getHint);
}
}
});
版权声明:本文为weixin_46698099原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。