Android鍵盤操作問題盤點

最近在做一個PDA掃描儀上使用的APP,中間涉及到很多鍵盤相關(guān)的操作,稍微總結(jié)一下,作為經(jīng)驗沉淀下來,也給有需要的人提供一些思路。

1,輸入框EditText主動獲取焦點。

場景:PDA的掃描結(jié)果會自動寫入處于當(dāng)前焦點的輸入框中,要想掃描結(jié)果寫在想要寫入的輸入框中,就得讓這個輸入框獲得焦點。

方法:scanAreaEdit.requestFocus();

2,取消EditText自動彈出軟鍵盤,使得默認(rèn)隱藏軟鍵盤。

場景:當(dāng)跳轉(zhuǎn)到一個帶有EditText輸入框的頁面時,軟鍵盤會自動彈出,會帶來不好的體驗,所以需要關(guān)閉掉自動彈出的軟鍵盤。

方法1:在父控件上加:android:focusable="true"? ?android:focusableInTouchMode="true"

方法2:在AndroidManifest文件中加android:windowSoftInputMode="stateHidden"。


3,監(jiān)聽輸入框輸入完成事件。

場景:當(dāng)用PDA掃描完的時候,需要去請求服務(wù)器做業(yè)務(wù)處理,掃描一次處理一次。但是如果掃描不成功的時候,需要手動輸入,這個時候就需要判斷什么時候輸入完成,不然就會每輸入一個字符就請求一次,給服務(wù)器帶來很大的壓力。所以需要判斷輸入是否完成。

方法:

scanAreaEdit.addTextChangedListener(new TextWatcher() {

@Override

? ? public void beforeTextChanged(CharSequence s,int start,int count,int after) {}

@Override

? ? public void onTextChanged(CharSequence s,int start,int before,int count) {}

@Override

? ? public void afterTextChanged(Editable s) {

if(delayRun!=null){

//每次editText有變化的時候,則移除上次發(fā)出的延遲線程

? ? ? ? ? ? textHandler.removeCallbacks(delayRun);

}

//輸入內(nèi)容不為空的時候

? ? ? ? if(!StringUtil.isBlank(s.toString())) {

boxNoText.setText(s);

//延遲800ms,如果不再輸入字符,則執(zhí)行該線程的run方法

? ? ? ? ? ? textHandler.postDelayed(delayRun,800);

}

}

});

private HandlertextHandler =new Handler();

private RunnabledelayRun =new Runnable() {

@Override

? ? public void run() {}

}

——handler.postDelayed(delayRun, 800);? 延遲800ms執(zhí)行線程。

——handler.removeCallbacks(delayRun);? 移除當(dāng)前MessageQueue里面的待執(zhí)行的線程。

4,?判斷軟鍵盤是否顯示

場景:在一些地方需要手動輸入,一些地方是直接掃描輸入,需要通過什么方式來判斷是哪一種輸入方式,這個時候通過判斷鍵盤是否顯示是一個很好的方法,因為手動輸入的時候鍵盤必須彈出顯示。

方法:

/**

* 判斷鍵盤是否彈起

* @return

*/

private boolean isKeyboardActive(){

int screenHeight = getWindow().getDecorView().getHeight();

//獲取View可見區(qū)域的bottom

? ? Rect rect =new Rect();

getWindow().getDecorView().getWindowVisibleDisplayFrame(rect);

return screenHeight - rect.bottom !=0;

}



碼字不易,如果覺得有幫助,一定要給我點贊喲~~

不然信不信我砸了你家燈,半夜偷親你 ( ̄ε  ̄) !!!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容