最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android EditText監(jiān)聽回車鍵并處理兩次回調(diào)問(wèn)題

 更新時(shí)間:2018年08月29日 13:40:53   作者:FynnJason  
這篇文章主要介紹了Android EditText監(jiān)聽回車鍵并處理兩次回調(diào)問(wèn)題,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

前言

我們都知道,在登面,搜索等等有EditText控件的界面上,當(dāng)用戶輸入完內(nèi)容后,點(diǎn)擊回車鍵執(zhí)行邏輯會(huì)有非常好的用戶體驗(yàn),所以今天我們來(lái)學(xué)習(xí)如何監(jiān)聽EditText監(jiān)聽回車鍵并處理監(jiān)聽時(shí)發(fā)生了兩次回調(diào)問(wèn)題。

代碼

首先我們?cè)趚ml布局中添加一個(gè)要監(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;
   }
  });
 }

接下來(lái)在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)行起來(lái),并在EditText中點(diǎn)擊回車鍵,會(huì)看到如下日志

E/MainActivity: onKey: 按下回車鍵
E/MainActivity: onKey: 按下回車鍵

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

兩次回調(diào)解答并解決

我們都知道,當(dāng)我們按某個(gè)鍵的時(shí)候,鍵盤有按下和抬起兩個(gè)操作,所以這里兩次回調(diào)就是回車按下時(shí),回調(diào)一次,回車鍵抬起時(shí),回調(diào)一次。

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

@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;
   }
  });
 }

我們?cè)龠\(yùn)行看看,點(diǎn)擊回車后,日志輸出

E/MainActivity: onKey: 按下回車鍵

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

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

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

刚察县| 江口县| 湘潭市| 英吉沙县| 调兵山市| 即墨市| 宜都市| 黔南| 麟游县| 旺苍县| 溧水县| 绵竹市| 金平| 上虞市| 蓬莱市| 固安县| 盐城市| 高唐县| 始兴县| 琼中| 射阳县| 安庆市| 建始县| 安阳市| 保靖县| 长岭县| 商水县| 南皮县| 万山特区| 静海县| 城固县| 安仁县| 寿光市| 大埔区| 郸城县| 青海省| 彩票| 马龙县| 沿河| 舞阳县| 富顺县|