首页 > 代码库 > 点击EditText可编辑,点击其他地方不可编辑

点击EditText可编辑,点击其他地方不可编辑

我是在Fragment中实现的,在网上查了,有的说要回调Activity的onTouch事件,通过实验直接在Fragment中即可。如下:

我的EditText在ScrollView,因为ScrollView本身已经设置onTouch事件,并不抛出,所以必须监听ScrollView的onTouch事件

开始和点击其他地方如图:

点击EditText时如图:

具体代码:

EditText:edtTxt_personal_nickname
ScrollView:sv_personal

首先设置EditText的点击事件:

点击时触发可编辑

点击事件:

case R.id.edtTxt_personal_nickname:			//昵称设置可编辑			setEditTextEditable(edtTxt_personal_nickname, true);			break;

  

  点击其他地方时事件:

sv_personal.setOnTouchListener(new OnTouchListener() {			@Override			public boolean onTouch(View v, MotionEvent event) {				//如果编辑框获得焦点				if(edtTxt_personal_nickname.isFocused()){					//设置编辑框不可见					setEditTextEditable(edtTxt_personal_nickname, false);					InputMethodManager imm=(InputMethodManager)getActivity().getSystemService(Context.INPUT_METHOD_SERVICE); 					imm.hideSoftInputFromWindow(edtTxt_personal_nickname.getWindowToken(), 0);				}				return false;			}		});

  

//设置昵称是否可编辑	private void setEditTextEditable(EditText editText, boolean value){		if (value) {			editText.setFocusableInTouchMode(true);			editText.requestFocus();			editText.setGravity(Gravity.LEFT);		}else {			editText.setFocusableInTouchMode(false);			editText.clearFocus();			editText.setGravity(Gravity.CENTER);		}	}

  

点击EditText可编辑,点击其他地方不可编辑