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


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中的事件傳遞機制進行傳遞了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM