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

2017-12-08  本文已影响0人  dididiwd

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

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图形树的变化。和当前可见的区域大小。来解决了。完美~

上一篇下一篇

猜你喜欢

热点阅读