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

作者: jetgege | 来源:发表于2017-04-01 19:35 被阅读1796次

以登录页面为例:

device~1.gif

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>
  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连接

相关文章

网友评论

  • v587的毅哥:900这个数值动态获取更具有通用性
    jetgege:@v587的毅哥 修改输入框底下view 的高度值,实现键盘顶起的效果,其实不是键盘把输入框顶起,而是这个view把输入框顶起
  • AlicFeng:nice~

本文标题:Android 键盘顶起最终完美解决方法

本文链接:https://www.haomeiwen.com/subject/cotwottx.html