Android EditText監(jiān)聽回車鍵并處理兩次回調(diào)問題
前言
我們都知道,在登面,搜索等等有EditText控件的界面上,當用戶輸入完內(nèi)容后,點擊回車鍵執(zhí)行邏輯會有非常好的用戶體驗,所以今天我們來學習如何監(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)解答并解決
我們都知道,當我們按某個鍵的時候,鍵盤有按下和抬起兩個操作,所以這里兩次回調(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的回車樣式,即是把EditText的ImeOptions屬性設置成不同的值,Enter鍵上就會顯示不同的文字或圖案
actionNone : 回車鍵,按下后光標到下一行
actionGo : Go,
actionSearch : 一個放大鏡
actionSend : Send
actionNext : Next
actionDone : Done,隱藏軟鍵盤,即使不是最后一個文本輸入框
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
Android編程使用sax解析xml數(shù)據(jù)的方法詳解
這篇文章主要介紹了Android編程使用sax解析xml數(shù)據(jù)的方法,結(jié)合實例形式詳細分析了Android使用sax解析xml數(shù)據(jù)的操作步驟及界面布局、單元測試等相關操作技巧,需要的朋友可以參考下2017-07-07
android 調(diào)用JNI SO動態(tài)庫的方法
android 調(diào)用JNI 分為靜態(tài)調(diào)用與動態(tài)調(diào)用,接下來通過本文給大家介紹android 調(diào)用JNI SO動態(tài)庫的方法,感興趣的朋友一起看看吧2021-11-11
Android從0到完整項目(1)使用Android studio 創(chuàng)建項目詳解
本篇文章主要介紹了Android從0到完整項目(1)使用Android studio 創(chuàng)建項目詳解,具有一定的參考價值,有興趣的可以了解一下2017-07-07
Android編程中調(diào)用Camera時預覽畫面有旋轉(zhuǎn)問題的解決方法
這篇文章主要介紹了Android編程中調(diào)用Camera時預覽畫面有旋轉(zhuǎn)問題的解決方法,涉及Android針對Camera調(diào)用攝像頭源碼部分的相關修改技巧,需要的朋友可以參考下2015-11-11
Android實現(xiàn)H5與Native交互的兩種方式
Android實現(xiàn)H5頁面和Native頁面交互的方法有兩種,一種是Url攔截的方法,另一種是JavaScript注入,下面來通過這篇文章分別講解。有需要的朋友們可以參考借鑒,下面來一起看看吧。2016-12-12

