以登录页面为例:
1.在布局底部放置一个透明的 view_Bottom,通过监听键盘弹出修改 view_Bottom的高度实现,键盘弹出顶起,键盘消失收回 的效果
<View
android:id="@+id/view_Bottom"
android:layout_alignParentBottom="true"
android:layout_width="match_parent"
android:layout_height="200dp">
</View>
- 获取根布局和底部View
View rootView;
View view_Bottom;
view_Bottom = findViewById(R.id.view_Bottom);
rootView=findViewById(R.id.root_View);
- 监听根布局Layout的布局变化,键盘弹出修改view_Bottom的高度,收起也修改view_Bottom的高度
//完美解决键盘顶起问题
rootView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
Rect r = new Rect();
rootView.getWindowVisibleDisplayFrame(r);
int screenHeight = rootView.getRootView().getHeight();
int heightDifference = screenHeight - (r.bottom - r.top);
if(heightDifference>150) params.height=900;
else params.height=600;
view_Bottom.setLayoutParams(params);
// Log.e("Keyboard Size, Size: " ,String.valueOf(heightDifference));
}
});
4.想要不再界面一出现就弹出键盘,完善用户体验,只要在根布局里加入,就能完美解决
android:focusable="true"
android:focusableInTouchMode="true"