一开始怀疑是搜索功能线程问题,排查是发现点击hintView时键盘就已经出现问题,此时还没有开始搜索。所以排查是不是因为EditText与RecyclerView嵌套导致的键盘闪烁。
通过查找资料:https://blog.csdn.net/longforus/article/details/70231634?fps=1&locationNum=7
主要是在layout文件的 RecyclerView节点下添加:
android:descendantFocusability="beforeDescendants"
android:fastScrollEnabled="false"
在清单文件的这个Activity下添加:
android:windowSoftInputMode="stateHidden|adjustPan"
通过添加以上代码解决该问题,主要是焦点问题。
属性:
android:windowSoftInputMode="stateAlwaysVisible|adjustPan"
- stateUnspecified:软键盘状态并没有指定,系统将选择一个合适的状态或依赖于主题的设置
- stateUnchanged:当这个Activity 出现时,软键盘将一直保持在上一个Activity 里的状态
- stateHidden:用户选择Activity 时,软键盘总是被隐藏
- stateAlwaysHidden:当该Activity 主窗口获取焦点时,软键盘也总是被隐藏
- stateVisible:软键盘通常是可见的
- stateAlwaysVisible:用户选择了该Activity 后软键盘总是显示的状态
- adjustUnspecified:默认设置,通常由系统自行决定是隐藏还是显示
- adjustResize:该Activity 总是调整屏幕的大小以便留出软键盘的空间
- adjustPan:当前窗口自动移动,以便当前焦点不被键盘覆盖,用户总能看见输入内容的部分
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
ChatActiviy中的键盘收起时listView会显示上个activity的内容,还未解决。
更新: 怀疑是与自定义滑动SwipeBackActionBarActivity布局有关,调用Onlayout重绘布局导致显示上个栈的内容。不继承该布局改为继承BaseActivity就好了,而且卡顿也明显减小。考虑滑动布局用户经常使用,暂不更改。