美文网首页
在weex页面下输入框被键盘遮挡问题

在weex页面下输入框被键盘遮挡问题

作者: dididiwd | 来源:发表于2017-12-08 19:45 被阅读0次

    在观众发讨论的时候,弹上来的键盘页面会把页面上的输入框遮挡。

    image.png

    由于页面是渲染的weex端的,所以一开始我以为android中那个ViewTreeObserver.OnGlobalLayoutListener()类不好用。也就没试,后来实在是没办法了,就想着试一下,就行了。

     /**
        *通过监听view视图的状态和当前可见的区域大小以及屏幕的高度,实现拿到键盘的高度。
        */
        ViewTreeObserver.OnGlobalLayoutListener mLayoutChangeListener=newViewTreeObserver.OnGlobalLayoutListener() {
        @Override
        public voidonGlobalLayout() {
        LogUtil.print("布局变化啦!!!");
        //判断窗口可见区域大小
        Rect r =newRect();
        getWindow().getDecorView().getWindowVisibleDisplayFrame(r);
        //如果屏幕高度和Window可见区域高度差值大于整个屏幕高度的1/3,则表示软键盘显示中,否则软键盘为隐藏状    态。
        intscreenHeight = ScreenUtils.getScreenHeight(PresentActivity.this);
        intheightDifference = screenHeight - (r.bottom- r.top);
        booleanisKeyboardShowing = heightDifference > screenHeight/3;
        if(isKeyboardShowing){
        LogUtil.print("键盘弹出来了!!!");
        LogUtil.print("!!!键盘高度为:"+heightDifference);
        HashMap integerHashMap =newHashMap<>();
        integerHashMap.put("keyBoradStatue",heightDifference);
        eventBusModule.nativeFireGlobalEvent("keyBoradAppear",integerHashMap);
        }else{
        HashMap integerHashMap =newHashMap<>();
        integerHashMap.put("keyBoradStatue",0);
        eventBusModule.nativeFireGlobalEvent("keyBoradDissAppear",integerHashMap);}}};
        getWindow().getDecorView().getViewTreeObserver().addOnGlobalLayoutListener(mLayoutChangeListener);
    
    image.png

    后来通过,监听view图形树的变化。和当前可见的区域大小。来解决了。完美~

    相关文章

      网友评论

          本文标题:在weex页面下输入框被键盘遮挡问题

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