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