【問題】
android中,對于EditText控件來說,雖然沒有獲得焦點,但是結果也還是跳出輸入法了:

希望達到的目的:當控件沒有被點選選中的話,不要顯示對應的輸入法。
當使用者點選選中後,再顯示對應的輸入法。
【折騰過程】
1.後來經過自己的摸索,發現好像不是,EditText沒有獲得焦點就顯示出輸入法,而應該是:
對于目前的Tab内的EditText來說,即使是Enable設定為False,不允許修改,但是其獲得了焦點後,還是會顯示輸入法。
是以應該是:
對于Enable為False的EditText來說,應該讓輸入法不顯示才對。
對于Enable為True的EditText來說,當獲得焦點後才顯示輸入法。
2.搜:
android edittext disabled not show inputmethod
參考:
去試試://update for focusable or not
if(variableValueView.isEnabled()){
variableValueView.setFocusable(true);
}
else{
variableValueView.setFocusable(false);
}
果然是可以禁止輸入法顯示的。
但是對于當切換到另外一個Tab,焦點處于第一個EditText後,輸入法還是沒顯示,而是重新點選一下才顯示,覺得這樣的話,也是不合理的。
3.再去搜已經廢棄的:
android:editable="false"
參考:
是以去試試://update for focusable or not
if(varIsEditable){
//deprecated
//variableValueView.setEnabled(true);
variableValueView.setFocusable(true);
variableValueView.setFocusableInTouchMode(true);
variableValueView.setOnFocusChangeListener(mFocusChangedListener);
}
else{
variableValueView.setFocusable(true);
variableValueView.setFocusableInTouchMode(true);
variableValueView.setOnFocusChangeListener(null);
variableValueView.setKeyListener(null);
}
看看結果:
結果沒法輸入了。
4.還是隻能改為之前的://update for focusable or not
if(varIsEditable){
//deprecated
variableValueView.setEnabled(true);
variableValueView.setFocusable(true);
variableValueView.setFocusableInTouchMode(true);
variableValueView.setOnFocusChangeListener(mFocusChangedListener);
}
else{
variableValueView.setEnabled(false);
variableValueView.setFocusable(true);
variableValueView.setFocusableInTouchMode(true);
variableValueView.setOnFocusChangeListener(null);
variableValueView.setKeyListener(null);
}
5.其實問題已經轉化為:
android中如何不自動跳出顯示鍵盤輸入法
是以去搜:
android not show keyboard
找到:
去Activity的onCreate中加入:getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
然後果然可以實作:
當啟動界面後,雖然已經獲得了焦點了,但是不自動跳出輸入法了。
【總結】
此處不是(Tab頁面内的)EditText沒有獲得焦點就顯示出輸入法;
也不是,EditText已把Enable設定為False,已經被禁止被編輯了,但是還是會顯示出輸入法;
而是:
當Activity啟動後,預設顯示出對應的輸入法了。
是以需要去在Activity的onCreate中加上:getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
去把預設(即使沒有控件獲得焦點卻也會彈出)顯示輸入法,去掉。就可以了。