EditText会自动获取焦点并弹出输入法的问题

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

 

posted @ 2013-10-03 18:40  bigfat  阅读(3352)  评论(3)    收藏  举报