Android 软键盘弹出收起监听/获取软键盘高度

Android屏幕信息参数概念理解:

一、获取屏幕的实际高度(包括状态栏与导航栏)

  Display defaultDisplay = manager.getDefaultDisplay();
        //屏幕实际高度
        Point realPoint = new Point();
        defaultDisplay.getRealSize(realPoint);

二、屏幕显示内容的宽度(不包括状态栏与导航栏)

/屏幕显示高度
        DisplayMetrics outMetrics = new DisplayMetrics();
        defaultDisplay.getMetrics(outMetrics);

三、获取显示内容的rootview的信息

final Rect r = new Rect();
activityRootView.getRootView().getWindowVisibleDisplayFrame(r);

1、r.top 状态栏的信息高度
2、r.bottom - r.top :显示内容的真实高度(rootview)

最后键盘高度:

int heightDiff = outMetrics.heightPixels - (r.bottom - r.top);

软键盘的弹出收起的监听:

view.rootView.viewTreeObserver.addOnGlobalLayoutListener {
            val r = Rect()
            view.rootView.getWindowVisibleDisplayFrame(r)
            //屏幕显示高度
            val outMetrics = DisplayMetrics()
            (view.context
                .getSystemService(WINDOW_SERVICE) as WindowManager).defaultDisplay.getMetrics(
                outMetrics
            )
            val heightDiff = outMetrics.heightPixels - (r.bottom - r.top)
            val navigationBarHeight: Int = view.getContext().navigationBarHeight
            if (heightDiff > navigationBarHeight){ //软键盘弹出
                //软键盘弹出高度 heightDiff
            }else{ //
                //软键盘收起
            }
        }
//获取导航栏的高度
val Context?.navigationBarHeight: Int
    get() {
        this ?: return 0
        val resourceId: Int = resources.getIdentifier("navigation_bar_height", "dimen", "android")
        var height = 0
        if (resourceId > 0) {
            height = resources.getDimensionPixelSize(resourceId)
        }
        return height
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值