生活随笔
收集整理的這篇文章主要介紹了
键盘-App监听软键盘按键的三种方式
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
前言:
我們在android手機上面有時候會遇到監(jiān)聽手機軟鍵盤按鍵的時候,例如:我們在瀏覽器輸入url完畢后可以點擊軟鍵盤右下角的“GO”按鍵加載url頁面;在點擊搜索框的時候,點擊右下角的search符號鍵可以進行搜索;或者在全部數(shù)據(jù)輸入完畢后,點擊右下角的"done"就馬上進行下一步操作。
效果圖:
function 1:
重寫Activity的dispatchKeyEvent(KeyEvent event)方法,在其中監(jiān)聽KeyEventKey.KEYCODE_ENTER鍵(右下角確定鍵),當此鍵按下的時候,隱藏輸入法軟鍵盤,設(shè)置edittext內(nèi)容和加載webview內(nèi)容。
[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)的方法感覺有點用牛刀的感覺,因為我們非常可能在這個方法中進行其他任務(wù),所以我們可以使用OnKeyListener的方法來監(jiān)聽軟鍵盤按鍵。
[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:
第三種方法我認為可以幫助程序員更精確的判斷右下角按鍵情況,以便應(yīng)對更加復(fù)雜的情況。它可以幫助程序員依據(jù)當前郵件下為“GO”,“done”,“search”鍵的情況下做出更細分的操作。
?
[java]?view plaincopy
edittext.setOnEditorActionListener(new?TextView.OnEditorActionListener()?{????????????????????????????@Override??????????????public?boolean?onEditorAction(TextView?v,?int?actionId,?KeyEvent?event)?{??????????????????????????????????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的時候也可能根據(jù)情況的不同設(shè)置輸入法的“確定”鍵,改變方法就是給EditText控件的imeOptions屬性設(shè)置成不同的值(此時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的時候,發(fā)現(xiàn)了webview的一個問題,就是直接使用webview.load(url)方法會在手機上面彈出系統(tǒng)瀏覽器來訪問url鏈接,而不是我們設(shè)置的webview,我找到的解決辦法就是使用webview.setWebViewClient(....)的方法來確保url會在activity的webview上面加載。
?
demo下載地址:
http://download.csdn.net/detail/zhufuing/6903671
轉(zhuǎn)載于:https://www.cnblogs.com/awkflf11/p/5035266.html
總結(jié)
以上是生活随笔為你收集整理的键盘-App监听软键盘按键的三种方式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。