日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

键盘-App监听软键盘按键的三种方式

發布時間:2025/4/9 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 键盘-App监听软键盘按键的三种方式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言:

我們在android手機上面有時候會遇到監聽手機軟鍵盤按鍵的時候,例如:我們在瀏覽器輸入url完畢后可以點擊軟鍵盤右下角的“GO”按鍵加載url頁面;在點擊搜索框的時候,點擊右下角的search符號鍵可以進行搜索;或者在全部數據輸入完畢后,點擊右下角的"done"就馬上進行下一步操作。

效果圖:























function 1:

重寫Activity的dispatchKeyEvent(KeyEvent event)方法,在其中監聽KeyEventKey.KEYCODE_ENTER鍵(右下角確定鍵),當此鍵按下的時候,隱藏輸入法軟鍵盤,設置edittext內容和加載webview內容。 [java]?view plaincopy
  • @Override??
  • ????public?boolean?dispatchKeyEvent(KeyEvent?event)?{??
  • ????????if(event.getKeyCode()?==?KeyEvent.KEYCODE_ENTER){??
  • ????????????/*隱藏軟鍵盤*/??
  • ????????????InputMethodManager?inputMethodManager?=?(InputMethodManager)?getSystemService(Context.INPUT_METHOD_SERVICE);??
  • ????????????if(inputMethodManager.isActive()){??
  • ????????????????inputMethodManager.hideSoftInputFromWindow(MainActivity.this.getCurrentFocus().getWindowToken(),?0);??
  • ????????????}??
  • ??????????????
  • ????????????edittext.setText("success");??
  • ????????????webview.loadUrl(URL);??
  • ????????????return?true;??
  • ????????}??
  • ????????return?super.dispatchKeyEvent(event);??
  • ????}??
  • function 2:

    重寫dispatchKeyEvent(KeyEvent event)的方法感覺有點用牛刀的感覺,因為我們非常可能在這個方法中進行其他任務,所以我們可以使用OnKeyListener的方法來監聽軟鍵盤按鍵。 [java]?view plaincopy
  • private?OnKeyListener?onKeyListener?=?new?OnKeyListener()?{??
  • ??????????
  • ????????@Override??
  • ????????public?boolean?onKey(View?v,?int?keyCode,?KeyEvent?event)?{??
  • ????????????if(keyCode?==?KeyEvent.KEYCODE_ENTER?&&?event.getAction()?==?KeyEvent.ACTION_DOWN){??
  • ????????????????/*隱藏軟鍵盤*/??
  • ????????????????InputMethodManager?inputMethodManager?=?(InputMethodManager)?getSystemService(Context.INPUT_METHOD_SERVICE);??
  • ????????????????if(inputMethodManager.isActive()){??
  • ????????????????????inputMethodManager.hideSoftInputFromWindow(v.getApplicationWindowToken(),?0);??
  • ????????????????}??
  • ??????????????????
  • ????????????????edittext.setText("success");??
  • ????????????????webview.loadUrl(URL);??
  • ??????????????????
  • ????????????????return?true;??
  • ????????????}??
  • ????????????return?false;??
  • ????????}??
  • ????};??
  • [java]?view plaincopy
  • edittext.setOnKeyListener(onKeyListener);??
  • function 3:

    第三種方法我認為可以幫助程序員更精確的判斷右下角按鍵情況,以便應對更加復雜的情況。它可以幫助程序員依據當前郵件下為“GO”,“done”,“search”鍵的情況下做出更細分的操作。

    ?

    [java]?view plaincopy
  • edittext.setOnEditorActionListener(new?TextView.OnEditorActionListener()?{??
  • ??????????????
  • ????????????@Override??
  • ????????????public?boolean?onEditorAction(TextView?v,?int?actionId,?KeyEvent?event)?{??
  • ????????????????/*判斷是否是“GO”鍵*/??
  • ????????????????if(actionId?==?EditorInfo.IME_ACTION_GO){??
  • ????????????????????/*隱藏軟鍵盤*/??
  • ????????????????????InputMethodManager?imm?=?(InputMethodManager)?v??
  • ????????????????????????????.getContext().getSystemService(??
  • ????????????????????????????????????Context.INPUT_METHOD_SERVICE);??
  • ????????????????????if?(imm.isActive())?{??
  • ????????????????????????imm.hideSoftInputFromWindow(??
  • ????????????????????????????????v.getApplicationWindowToken(),?0);??
  • ????????????????????}??
  • ??????????????????????
  • ????????????????????edittext.setText("success");??
  • ????????????????????webview.loadUrl(URL);??
  • ??????????????????????
  • ????????????????????return?true;??
  • ????????????????}??
  • ????????????????return?false;??
  • ????????????}??
  • ????????});??
  • ?

    改變軟鍵盤右下角確定鍵樣式:

    軟鍵盤輸入法的按鍵并不是一成不變的,例如它的右下角的“確定”鍵,在有搜索框的時候就會變成帶搜索圖標的按鍵,在瀏覽器地址欄的時候則會變成“GO”鍵,我們在寫App的時候也可能根據情況的不同設置輸入法的“確定”鍵,改變方法就是給EditText控件的imeOptions屬性設置成不同的值(此時Enter鍵可以顯示不同的文字和圖案)。 [html]?view plaincopy
  • <EditText??
  • ????????android:id="@+id/edittext"??
  • ????????android:layout_width="match_parent"??
  • ????????android:layout_height="wrap_content"??
  • ????????android:singleLine="true"??
  • ????????android:imeOptions="actionSearch"/>??
  • actionNone : 回車鍵,按下后光標到下一行
    actionGo : Go,
    actionSearch : 放大鏡
    actionSend : Send
    actionNext : Next
    actionDone : Done,確定/完成,隱藏軟鍵盤,即使不是最后一個文本輸入框

    題外話:

    ? ? ? ?我在寫這個demo的時候,發現了webview的一個問題,就是直接使用webview.load(url)方法會在手機上面彈出系統瀏覽器來訪問url鏈接,而不是我們設置的webview,我找到的解決辦法就是使用webview.setWebViewClient(....)的方法來確保url會在activity的webview上面加載。

    ?

    demo下載地址:

    http://download.csdn.net/detail/zhufuing/6903671

    轉載于:https://www.cnblogs.com/awkflf11/p/5035266.html

    總結

    以上是生活随笔為你收集整理的键盘-App监听软键盘按键的三种方式的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。