EditText点击后焦点丢失需二次点击输入的问题排查
针对你遇到的EditText首次点击弹出键盘后随即失焦的问题,结合你提供的布局代码,常见原因及排查解决方式如下:
可能原因及对应解决
父布局抢占焦点
如果ConstraintLayout(或其他父视图)被设置了android:focusable="true"和android:focusableInTouchMode="true",会在软键盘弹出时夺取EditText的焦点。检查你的布局文件,若父布局包含这两个属性,直接移除即可。软键盘弹出导致布局重绘重置焦点
当软键盘弹出时,系统会自动调整布局尺寸,可能引发焦点丢失。你可以在对应Activity的Manifest配置中添加软键盘适配模式:android:windowSoftInputMode="adjustPan"该模式会让整个布局上移以适配键盘,避免因布局重绘导致的焦点异常。
自定义背景Drawable异常
你为EditText设置了@drawable/bg_et作为背景,如果这个自定义Drawable(尤其是Selector类型)的焦点状态配置错误,可能导致视图焦点异常。可以暂时将背景替换为系统默认样式(@android:drawable/edit_text)进行测试,若问题消失,再检查自定义Drawable的代码逻辑。触摸事件被拦截
若当前Activity/Fragment中重写了onTouchEvent或dispatchTouchEvent方法,或者引入的第三方库拦截了触摸事件,可能导致EditText的焦点无法正常保留。检查相关代码,确保触摸事件能正常传递到EditText。输入法兼容性问题
部分第三方输入法可能存在焦点适配问题,切换到系统默认输入法(如Google拼音输入法)测试,若问题消失,说明是输入法的兼容性问题,可尝试更新输入法或更换其他版本。
内容的提问来源于stack exchange,提问作者Vadim Fedchuk

