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

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

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

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

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

点击EditText时如图:

点击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)