Android 软键盘弹出时布局内指定内容上移实现及问题解决

Posted zhujiabin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 软键盘弹出时布局内指定内容上移实现及问题解决相关的知识,希望对你有一定的参考价值。

Android SDK目前提供的软键盘弹出模式接口只有两种:
一是弹出时自动回冲界面,将所有元素上顶,
一种则是不重绘界面,直接将控件元素遮住,
 
没有其他模式,如果想实现其他效果,光使用系统接口是不行的。
 
解决方法:
 
第一步:给想要被顶上去的内容嵌套一个 ScrollView :
 
<ScrollView
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1"
    android:scrollbars="none" 
    >
    
    …… 想要被顶上去的内容 ……
    
</ScrollView>

第二步:在  文件中给对应的 Activity 设置 

android:windowSoftInputMode="adjustResize"

一些机型到这里问题就已经解决了! 

有些机型会出现点击过 EditView 它获得了焦点也弹出了软键盘,
但是收回软键盘后,再点击该 EditView 会出现被软键盘遮挡的情况,
点其它 EditView 后,再来点该 EditView 又恢复正常不再被遮挡,
为了解决此问题见如下:
 
第三步:
发现去掉 ScrollView 的 android:scrollbars="none" 属性后问题就解决了!
但会出现滚动条,所以这个属性不能去掉,
只需在 Activity 的 onCreate 事件处理函数中的 setContentView 方法后紧跟着写上
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
即可解决此问题!

以上是关于Android 软键盘弹出时布局内指定内容上移实现及问题解决的主要内容,如果未能解决你的问题,请参考以下文章

怎么让软键盘弹出时,部分控件上移

android软键盘弹出时如何处理页面布局

flutter 键盘弹出时list view 置底

Android软键盘弹出时把布局顶上去的解决方法

EditText键盘弹出时,会将布局底部的导航条顶上去(解决方法之一)

DialogActivity软键盘弹出时布局顶上去的问题