国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android EditText監聽回車鍵并處理兩次回調問題

2019-12-12 00:33:01
字體:
來源:轉載
供稿:網友

前言

我們都知道,在登面,搜索等等有EditText控件的界面上,當用戶輸入完內容后,點擊回車鍵執行邏輯會有非常好的用戶體驗,所以今天我們來學習如何監聽EditText監聽回車鍵并處理監聽時發生了兩次回調問題。

代碼

首先我們在xml布局中添加一個要監聽的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>

要想監聽到軟鍵盤按下什么鍵,就需要使用setOnKeyListener方法,在Activity中,我們編寫監聽代碼

@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方法中監聽回車鍵

@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: 按下回車鍵

為什么我們會看到兩次日志輸入呢?

兩次回調解答并解決

我們都知道,當我們按某個鍵的時候,鍵盤有按下和抬起兩個操作,所以這里兩次回調就是回車按下時,回調一次,回車鍵抬起時,回調一次。

要解決這個辦法非常簡單,我們只需要多加一個條件判斷,是抬起還是按下即可

@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,隱藏軟鍵盤,即使不是最后一個文本輸入框

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 龙游县| 新巴尔虎右旗| 定日县| 娄底市| 尼勒克县| 抚松县| 五寨县| 黄龙县| 吴忠市| 林口县| 内江市| 江源县| 沂源县| 徐水县| 渝中区| 黄浦区| 杂多县| 霍林郭勒市| 偏关县| 武乡县| 邵东县| 荔波县| 郁南县| 岳阳县| 定远县| 锦州市| 开原市| 道孚县| 灵宝市| 钟祥市| 广饶县| 南川市| 克山县| 富源县| 襄垣县| 密云县| 翼城县| 河东区| 会泽县| 泗洪县| 榆社县|