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