我們一般是監聽EditText的狀態,看EditText中是不是有文字,根據有無進行不同的操作。
// 給editText添加監聽器 editText.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { // 輸入過程中,還在內存里,沒到屏幕上 } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { // 在輸入之前會觸發的 } @Override public void afterTextChanged(Editable s) { // 輸入完將要顯示到屏幕上時會觸發 boolean isEmpty = s.toString().trim().isEmpty(); } });
如果想要定義回車鍵事件,也需要監聽按鍵,然后進行處理。這里需要注意的是必須兩個條件同時滿足,否則會出現執行兩次的錯誤。
/** * 設置發送消息的按鈕和輸入框 按下回車鍵,發送消息 */ editText = (EditText) findViewById(R.id.conversation_editText); editText.setOnKeyListener(new OnKeyListener() { @Override public boolean onKey(View v, int keyCode, KeyEvent event) { // 這兩個條件必須同時成立,如果僅僅用了enter判斷,就會執行兩次 if (keyCode == KeyEvent.KEYCODE_ENTER && event.getAction() == KeyEvent.ACTION_DOWN) { // 執行發送消息等操作
return true; } return false; } });