android中editText彈出軟鍵盤并且根據editText中是否是內容來控制按鈕的可用性
來自: http://blog.csdn.net//chenguang79/article/details/48543561
android 中editText點擊彈出軟鍵盤比較容易,可是有一種情況是,我們中轉到一個編輯頁面,讓焦點在第一個editText中,同時自動彈出軟鍵盤。一般情況的情況是
editText.setFocusable(true); InputMethodManager inputManager =(InputMethodManager)editText.getContext().getSystemService(Context.INPUT_METHOD_SERVICE); inputManager.showSoftInput(editText, 0);
這種情況,在寫法上沒有問題,可是我會發現,這種情況,很多時間是沒有反應的, 為什么?因為有時候,editText并沒有完全加載完,所以后面的事件,無法相應。怎么辦?我們只要讓彈出的軟鍵盤延遲半秒鐘就OK了,把上面的代碼,改一下OK
editText.setFocusable(true); Timer timer = new Timer(); timer.schedule(new TimerTask() { public void run() { InputMethodManager inputManager = (InputMethodManager)editText.setFocusable.getContext().getSystemService(Context.INPUT_METHOD_SERVICE); inputManager.showSoftInput(editText.setFocusable, 0); } }, 500);
這回再試一下,就OK了
還有一種需求是這樣的,當editText里面的內容為空時,確定按鈕為不可用,只有有內容的時候,才為可用。這個很多會說,在點提交的時候,做一下判斷就可以,然后Toast一個提示,不是就可以了嗎,速度還快。可是有時候,用戶的需求是變態的。我們只能滿足他,怎么做呢,我想大家都知道,editText有一個事件,addTextChangedListener它里面可以對editText進行監聽,如下:
editText.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) { //結果顯示在輸入框中 } });
我們一般只要在onTextChanged中,根據s.length()是否大于0就可以完成,可是這里有一個問題,你會發現,你輸入的字越多,這個onTextChanged每次執行的次數也就越多,試想一下,如果是幾百字,系統怕是要卡死。這怎么辦呢。在editText中有一個屬性叫inputType,它里面有一個值textNoSuggestions,官方的解釋是“不提示”,我們只要設置了這個屬性,你再試一次,你每次添加一個字或是刪除一個字,editText就只會執行一次了,而不是根據你editText中有多少內容而執行多少次了。代碼如下:
editText.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) { if(s.length>0) { txt_collection_add_ok.setEnabled(true); } else { txt_collection_add_ok.setEnabled(false); } } @Override public void afterTextChanged(Editable s) { //結果顯示在輸入框中 } });
本文由用戶 mppolk 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!