其實真正煩人的就是一到頁面就彈出來一個輸入法,輸入法之所以會彈出是因為EditText獲取了焦點,而讓EditText獲取焦點是android默認的,哪怕你沒設置它獲取焦點
一個解決的方法就是讓別的控件獲取焦點,這樣EditText就不會自動獲取焦點了
一般可以在最底層的Layout中添加下面兩行代碼,讓最底層Layout獲取焦點:
android:focusable="true" android:focusableInTouchMode="true"
注:1、這個方法只能解決在進入一個界面時EditText自動獲取焦點的問題
2、感謝Dream boy同學的評論,剛開始寫一些東西,很容易給大家帶來誤導,相信以后會越來越好
如果想要點擊EditText彈出軟鍵盤后,觸摸別的地方軟鍵盤自動收起則另需辦法
一般是在觸摸別的View的監聽器里面把軟鍵盤給收起,例如在ListView的滾動監聽器中收起軟鍵盤:
listView.setOnScrollListener(new OnScrollListener() { @Override public void onScrollStateChanged(AbsListView view, int scrollState) { InputMethodManager inputMethodManager = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE); inputMethodManager.hideSoftInputFromWindow(getActivity().getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); } @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { } });
關鍵是收起軟鍵盤的代碼:
InputMethodManager inputMethodManager = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
inputMethodManager.hideSoftInputFromWindow(getActivity().getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
注:收起軟鍵盤后EditText依舊獲取焦點,所以這個方法還是不能從根本上解決EditText獲取焦點的問題,如果哪位同學直到方法,希望可以教我一下