原創(chuàng)不易呛谜,轉(zhuǎn)載請注明出處在跳,謝謝了。
前言
我們都知道隐岛,在登面猫妙,搜索等等有EditText控件的界面上,當(dāng)用戶輸入完內(nèi)容后聚凹,點擊回車鍵執(zhí)行邏輯會有非常好的用戶體驗割坠,所以今天我們來學(xué)習(xí)如何監(jiān)聽EditText監(jiān)聽回車鍵并處理監(jiān)聽時發(fā)生了兩次回調(diào)問題。
代碼
首先我們在xml布局中添加一個要監(jiān)聽的EditText
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<EditText
android:id="@+id/et_text"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
要想監(jiān)聽到軟鍵盤按下什么鍵妒牙,就需要使用setOnKeyListener方法彼哼,在Activity中,我們編寫監(jiān)聽代碼
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
EditText et = findViewById(R.id.et_text);
et.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
return false;
}
});
}
接下來在onKey方法中監(jiān)聽回車鍵
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
EditText et = findViewById(R.id.et_text);
et.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_ENTER){
Log.e("MainActivity", "onKey: 按下回車鍵");
return true;
}
return false;
}
});
}
我們運行起來湘今,并在EditText中點擊回車鍵敢朱,會看到如下日志
E/MainActivity: onKey: 按下回車鍵
E/MainActivity: onKey: 按下回車鍵
為什么我們會看到兩次日志輸入呢?
兩次回調(diào)解答并解決
我們都知道象浑,當(dāng)我們按某個鍵的時候蔫饰,鍵盤有按下和抬起兩個操作,所以這里兩次回調(diào)就是回車按下時愉豺,回調(diào)一次篓吁,回車鍵抬起時,回調(diào)一次蚪拦。
要解決這個辦法非常簡單杖剪,我們只需要多加一個條件判斷冻押,是抬起還是按下即可
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
EditText et = findViewById(R.id.et_text);
et.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_ENTER && event.getAction() == KeyEvent.ACTION_UP) {
Log.e("MainActivity", "onKey: 按下回車鍵");
return true;
}
return false;
}
});
}
我們再運行看看,點擊回車后盛嘿,日志輸出
E/MainActivity: onKey: 按下回車鍵
好了洛巢,這就是EditText監(jiān)聽回車鍵并處理兩次回調(diào),如果文章幫助到你次兆,點個喜歡支持一下吧稿茉,謝謝。