Android 键盘顶起最终完美解决方法

以登录页面为例:

device~1.gif

1.在布局底部放置一个透明的 view_Bottom,通过监听键盘弹出修改 view_Bottom的高度实现,键盘弹出顶起,键盘消失收回 的效果

    
    
  1. 获取根布局和底部View
    View  rootView;
    View view_Bottom;
    view_Bottom = findViewById(R.id.view_Bottom);
    rootView=findViewById(R.id.root_View);
  1. 监听根布局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"

Demo连接

你可能感兴趣的:(Android 键盘顶起最终完美解决方法)