天天看點

android沒有輸入焦點類控件的輸入法調用,【已解決】android中的EditText控件沒有獲得焦點但是輸入法卻彈出顯示->Activity中不要預設就顯示輸入法...

【問題】

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

android沒有輸入焦點類控件的輸入法調用,【已解決】android中的EditText控件沒有獲得焦點但是輸入法卻彈出顯示->Activity中不要預設就顯示輸入法...

希望達到的目的:當控件沒有被點選選中的話,不要顯示對應的輸入法。

當使用者點選選中後,再顯示對應的輸入法。

【折騰過程】

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);

去把預設(即使沒有控件獲得焦點卻也會彈出)顯示輸入法,去掉。就可以了。