EditText自動獲取焦點並彈出鍵盤&EditText不自動獲取焦點並且不會彈出鍵盤

1.EditText不自動獲取焦點並且不會彈出鍵盤

找到EditText的父控件,設置其父控件爲:

Parent.setFocusable(true);
Parent.setFocusableInTouchMode(true);
  1. 調用指定方法令 EditText自動獲取焦點並彈出鍵盤
private void showInputTips(EditText et_text) {
        et_text.setFocusable(true);
        et_text.setFocusableInTouchMode(true);
        et_text.requestFocus();
        InputMethodManager inputManager =
                (InputMethodManager) et_text.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
        inputManager.showSoftInput(et_text, 0);
    }

3.點擊進入Activity後就讓 EditText自動獲取焦點並彈出鍵盤

et_text = (EditText) findViewById(R.id.et_text);
        et_text.setFocusable(true);
        et_text.setFocusableInTouchMode(true);
        et_text.requestFocus();

並在清單文件中設置該Activity的屬性: 
android:windowSoftInputMode="stateVisible" 

Q: 爲什麼給EditText的父佈局設置focusableInTouchMode = true,就能夠阻止EditText自動獲取焦點?
A:我們都知道如果在佈局中有EdiText的話,EditText會默認獲得焦點,彈出鍵盤。事實上,對於手機來說,只需要添加 android:focusableInTouchMode = true 就可以了。
EditText自動獲取焦點主要是因爲當我們沒有給EditText的父佈局設置focusableInTouchMode的時候,它的父佈局是默認沒有這個能力的,所以焦點就會直接被EditText爭奪去。如果我們設置了focusableInTouchMode的話,這樣EditText的父佈局就會有這個能力了,這樣只有我們觸摸的時候觸發相應的事件,通過Android中的事件傳遞機制進行傳遞了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章