1.EditText不自動獲取焦點並且不會彈出鍵盤
找到EditText的父控件,設置其父控件為:
Parent.setFocusable(true); Parent.setFocusableInTouchMode(true);
2. 調用指定方法令 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中的事件傳遞機制進行傳遞了。