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

首頁 > 系統 > Android > 正文

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

2019-10-21 21:39:43
字體:
來源:轉載
供稿:網友

前言

我們都知道,在登面,搜索等等有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,隱藏軟鍵盤,即使不是最后一個文本輸入框

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


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 黄平县| 西乌珠穆沁旗| 安丘市| 虞城县| 湘阴县| 邵阳县| 商水县| 淮北市| 凤山市| 南平市| 肃南| 山阴县| 福州市| 湘阴县| 桐乡市| 安新县| 白河县| 长寿区| 栖霞市| 马公市| 义马市| 唐海县| 社旗县| 永寿县| 灌南县| 郸城县| 永州市| 汶川县| 汉中市| 东台市| 开鲁县| 垣曲县| 浪卡子县| 南宫市| 晋城| 阿拉善盟| 陆河县| 高要市| 鹰潭市| 都匀市| 手游|