點擊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);
		}
	}

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM