部分机型EditText置于屏幕底部时输入文本无法即时显示的问题求助
解决底部EditText输入文本不即时显示的问题
我之前也碰到过一模一样的问题——把EditText固定在屏幕底部时,部分手机上输入的文字要等软键盘消失才会显示,移到键盘上方就正常。这种情况大多是软键盘弹出时,系统的布局刷新没有及时触发EditText的重绘导致的,给你几个实用性拉满的解决方案:
方案一:调整Activity的软键盘适配模式
最直接的解决方式是在AndroidManifest.xml里给对应的Activity添加软键盘调整属性,让窗口在软键盘弹出时自动调整布局大小:
<activity android:name=".PostPicApercuActivity" <!-- 替换成你的Activity类名 --> android:windowSoftInputMode="adjustResize"/>
adjustResize会让系统在软键盘弹出时重新计算窗口大小,把底部的EditText推到软键盘上方,同时触发视图的重绘,这样输入的文字就能即时显示了。这是我最推荐的方案,属于系统级的适配,几乎能解决大部分这类问题。
方案二:手动触发EditText重绘
如果方案一没起作用,可以给EditText添加文本变化监听,在输入时强制它刷新自己:
titrePoste.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) {} @Override public void onTextChanged(CharSequence s, int start, int before, int count) { // 手动触发视图重绘,确保输入的文字立刻显示 titrePoste.invalidate(); } @Override public void afterTextChanged(Editable s) {} });
这个方法通过监听文本变化,每次输入文字时都强制EditText刷新界面,绕过系统可能的刷新延迟问题。
方案三:检查布局父容器的属性
如果你的EditText父容器是RelativeLayout,可以检查一下有没有其他冲突的布局属性(比如和其他控件的依赖关系);或者考虑换成LinearLayout,用layout_weight来分配空间,让EditText的布局更灵活,能更好地响应软键盘的弹出事件。
先试试方案一,大概率能解决问题,要是不行再依次尝试后面的方法~
内容的提问来源于stack exchange,提问作者Réda Youssoufi
相关产品推荐
相关产品推荐

