From 9e93ddc8847d0a3c6925db9f744439a540bd17e7 Mon Sep 17 00:00:00 2001 From: MFW <504842375@qq.com> Date: Tue, 26 Jan 2021 17:46:41 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=8F=AF=E4=BB=A5?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=94=AE=E7=9B=98=E9=AB=98=E5=BA=A6=E5=8A=A8?= =?UTF-8?q?=E6=80=81=E5=8F=98=E5=8C=96=E5=AF=BC=E8=87=B4=E9=94=AE=E7=9B=98?= =?UTF-8?q?=E9=81=AE=E6=8C=A1=E8=BE=93=E5=85=A5=E6=A1=86=E7=9A=84=E5=8A=9E?= =?UTF-8?q?=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/lxj/xpopup/core/BasePopupView.java | 6 ++++++ .../main/java/com/lxj/xpopup/util/XPopupUtils.java | 11 ++++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/library/src/main/java/com/lxj/xpopup/core/BasePopupView.java b/library/src/main/java/com/lxj/xpopup/core/BasePopupView.java index 925cf4e1..ee23557f 100644 --- a/library/src/main/java/com/lxj/xpopup/core/BasePopupView.java +++ b/library/src/main/java/com/lxj/xpopup/core/BasePopupView.java @@ -153,6 +153,7 @@ public void run() { KeyboardUtils.registerSoftInputChangedListener(getHostWindow(), BasePopupView.this, new KeyboardUtils.OnSoftInputChangedListener() { @Override public void onSoftInputChanged(int height) { + onKeyboardHeightChanged(height); if(popupInfo!=null && popupInfo.xPopupCallback!=null) { popupInfo.xPopupCallback.onKeyBoardStateChanged(BasePopupView.this,height); } @@ -574,6 +575,11 @@ protected void beforeDismiss(){} protected void onShow() { } + /** + * 当键盘高度改变时调用 + */ + protected void onKeyboardHeightChanged(int height) {} + @OnLifecycleEvent(value = Lifecycle.Event.ON_DESTROY) public void onDestroy(){ destroy(); diff --git a/library/src/main/java/com/lxj/xpopup/util/XPopupUtils.java b/library/src/main/java/com/lxj/xpopup/util/XPopupUtils.java index 27ee86d8..5fc00465 100644 --- a/library/src/main/java/com/lxj/xpopup/util/XPopupUtils.java +++ b/library/src/main/java/com/lxj/xpopup/util/XPopupUtils.java @@ -215,7 +215,8 @@ public static int getDecorViewInvisibleHeight(final Window window) { //监听到的keyboardHeight有一定几率是错误的,比如在同时显示导航栏和弹出输入法的时候,有一定几率会算上导航栏的高度, //这个不是必现的,暂时无解 - private static int correctKeyboardHeight = 0; + //为了方便用户修改键盘高度和获取当前键盘高度 + static int correctKeyboardHeight = 0; public static void moveUpToKeyboard(final int keyboardHeight, final BasePopupView pv) { if (correctKeyboardHeight == 0) correctKeyboardHeight = keyboardHeight; @@ -229,6 +230,14 @@ public void run() { }); } + //如果变化键盘高度,需要调整弹窗,请使用SimpleCallback,重写onKeyBoardStateChanged,在onKeyBoardStateChanged中调用XPopupUtils.moveUpToKeyboardNow + //或者重写popupView中的onKeyboardHeightChanged + //此处修改correctKeyboardHeight是为了修复打开其他弹窗时键盘高度不对导致遮挡输入框问题 + public static void moveUpToKeyboardNow(final int keyboardHeight, final BasePopupView pv) { + correctKeyboardHeight = keyboardHeight; + moveUpToKeyboardInternal(correctKeyboardHeight, pv); + } + private static void moveUpToKeyboardInternal(int keyboardHeight, BasePopupView pv) { if (pv.popupInfo == null || !pv.popupInfo.isMoveUpToKeyboard) return; //暂时忽略PartShadow弹窗和AttachPopupView From e13452f59f7268bfe83c387c25e64f6221ec10a0 Mon Sep 17 00:00:00 2001 From: MFW <504842375@qq.com> Date: Fri, 5 Feb 2021 11:06:06 +0800 Subject: [PATCH 2/2] =?UTF-8?q?1=E5=8D=87=E7=BA=A7=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E9=94=AE=E7=9B=98=E9=AB=98=E5=BA=A6=E5=8A=A8=E6=80=81=E5=8F=98?= =?UTF-8?q?=E5=8C=96=E7=9A=84=E5=86=99=E6=B3=95=E3=80=822=E4=BF=AE?= =?UTF-8?q?=E5=A4=8DpassClickThrough=E4=BC=A0=E9=80=92=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- library/src/main/java/com/lxj/xpopup/core/BasePopupView.java | 2 ++ library/src/main/java/com/lxj/xpopup/util/XPopupUtils.java | 5 ++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/library/src/main/java/com/lxj/xpopup/core/BasePopupView.java b/library/src/main/java/com/lxj/xpopup/core/BasePopupView.java index ee23557f..9bb8dff2 100644 --- a/library/src/main/java/com/lxj/xpopup/core/BasePopupView.java +++ b/library/src/main/java/com/lxj/xpopup/core/BasePopupView.java @@ -662,6 +662,8 @@ public boolean onTouchEvent(MotionEvent event) { y = 0; break; } + } else { + passClickThrough(event); } return true; } diff --git a/library/src/main/java/com/lxj/xpopup/util/XPopupUtils.java b/library/src/main/java/com/lxj/xpopup/util/XPopupUtils.java index 5fc00465..0613a3dd 100644 --- a/library/src/main/java/com/lxj/xpopup/util/XPopupUtils.java +++ b/library/src/main/java/com/lxj/xpopup/util/XPopupUtils.java @@ -235,7 +235,10 @@ public void run() { //此处修改correctKeyboardHeight是为了修复打开其他弹窗时键盘高度不对导致遮挡输入框问题 public static void moveUpToKeyboardNow(final int keyboardHeight, final BasePopupView pv) { correctKeyboardHeight = keyboardHeight; - moveUpToKeyboardInternal(correctKeyboardHeight, pv); + pv.getPopupContentView().animate().translationY(-keyboardHeight) + .setDuration(200) + .setInterpolator(new OvershootInterpolator(0)) + .start(); } private static void moveUpToKeyboardInternal(int keyboardHeight, BasePopupView pv) {