其实真正烦人的就是一到页面就弹出来一个输入法,输入法之所以会弹出是因为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获取焦点的问题,如果哪位同学直到方法,希望可以教我一下