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获取焦点的问题,如果哪位同学直到方法,希望可以教我一下

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM