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

以登录页面为例:

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,637评论 25 708
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,259评论 4 61
  • 内容抽屉菜单ListViewWebViewSwitchButton按钮点赞按钮进度条TabLayout图标下拉刷新...
    皇小弟阅读 46,908评论 22 665
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,567评论 0 17
  • 2017.4.14 1.五点半起床 2.背了七个英语单词 3.读了十页边城 4.练了192个字 5.跑了1400米...
    Fhwak阅读 245评论 1 1