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()即可获取焦点。

项目中的操作

Android View获取焦点_第1张图片
这个是项目中的本来的逻辑
Android View获取焦点_第2张图片
项目中的抽屉回调

最后解决方法

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

你可能感兴趣的:(Android View获取焦点)