Android View获取焦点

做项目的时候遇到一个bug,在一个Activity中打开DrawerLayout,这样就会遇到一个问题,在Activity中的EditText的焦点还在,这样根据项目中的代码逻辑数据就会同步不过来,这样展示就会有问题,所以打算总结一下。

Android新启动Activity,dialog或者其他窗体中中包含EditText, 新启动的activity的焦点默认在EditText上,这是android系统会弹出软键盘,挤压activity本来的界面,影响美观。
因此最好在新窗体创建时,最好在onCreate()方法中将焦点放在另一个view上. view使用requestFocus()焦点,但是如果让button或者textView之类控件直接使用requestFocus()方法,则无法获取焦点,焦点会依然在editText上。

只能在使用View的requestFocus()方法之前调用下面2个方法,view才可获取焦点:

view.setFocusable(true);

view.setFocusableInTouchMode(true);

然后调用 requestFocus(),requestFocusFromTouch()即可获取焦点。

项目中的操作

这个是项目中的本来的逻辑
项目中的抽屉回调

最后解决方法

在抽屉滑动的时候让抽屉获得焦点,这样原Activity的焦点消失,更新List的Data,然后抽屉里面在取最新的ListData,达到更新的目的。。。。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容