Android:EditText点击时获取焦点&hint消失,点击外部焦点消失&恢复hint

起因:在写一个输入框的时候,需要用到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版权协议,转载请附上原文出处链接和本声明。