Android中怎么利用EditText監(jiān)聽回車鍵并處理兩次回調(diào)-創(chuàng)新互聯(lián)

Android中怎么利用 EditText監(jiān)聽回車鍵并處理兩次回調(diào)?針對這個問題,這篇文章詳細(xì)介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

專注于為中小企業(yè)提供網(wǎng)站設(shè)計制作、成都網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)克州免費做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了上千家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

首先我們在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;
   }
  });
 }

我們運(yùn)行起來,并在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;
   }
  });
 }

我們再運(yùn)行看看,點擊回車后,日志輸出

E/MainActivity: onKey: 按下回車鍵

也可以修改editText的回車樣式,即是把EditText的ImeOptions屬性設(shè)置成不同的值,Enter鍵上就會顯示不同的文字或圖案

actionNone : 回車鍵,按下后光標(biāo)到下一行
actionGo : Go,
actionSearch : 一個放大鏡
actionSend : Send
actionNext : Next
actionDone : Done,隱藏軟鍵盤,即使不是最后一個文本輸入框

關(guān)于Android中怎么利用 EditText監(jiān)聽回車鍵并處理兩次回調(diào)問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識。

文章題目:Android中怎么利用EditText監(jiān)聽回車鍵并處理兩次回調(diào)-創(chuàng)新互聯(lián)
文章轉(zhuǎn)載:http://bm7419.com/article4/dgocoe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供動態(tài)網(wǎng)站網(wǎng)站設(shè)計、網(wǎng)站維護(hù)手機(jī)網(wǎng)站建設(shè)、用戶體驗建站公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)