Closed hapzhu closed 4 years ago
崩溃信息没有一行跟basepopup相关。。。
我也觉得很奇怪,看不到是跟程序哪里的代码相关,但确实是与basePopup有关系。我换成原生的popupwindow就没事。
// ControlPopupWindow controlPopupWindow = new ControlPopupWindow(this.getApplicationContext());
// controlPopupWindow.setOutSideTouchable(false);
// controlPopupWindow.showPopupWindow(ivTitleExpand);
PopupWindow popupWindow = new PopupWindow(LayoutInflater.from(this).inflate(R.layout.popup_window_mediacontrol,null), ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT);
popupWindow.setBackgroundDrawable(new ColorDrawable());
popupWindow.setOutsideTouchable(true);
popupWindow.showAsDropDown(ivTitleExpand);
我确定是用了basepopup这个库的
import razerdp.basepopup.BasePopupWindow;
public class ControlPopupWindow extends BasePopupWindow {}
我发现原生的popupwindow弹出来在滑动seekbar是不能点击外部非内容区域消失的,但basepopup在滑动时是可以点击外部区域消失,大佬你可以试下。
点击外部是否消失是允许你控制的,setOutSideDismiss()
我在自己手机上(8.0系统)测试没有崩溃,但有一点是basepopup所特有的现象,就是当按住seekbar的滑动按钮时,再同时触碰外部区域整个弹窗会消失,即是两点同时触碰会让弹窗dismiss,可原生的popupwindow在按住seekbar时是无法点击外部区域使其消失的。我以为 popupWindow.setOutsideTouchable(false)会有作用,实际上还是会隐藏,有什么办法可以让用户在触碰内容弹窗区域时,不可点击外部区域使其dismiss吗。这里不是指设置外部不可点击setOutSideDismiss()。
出现这个问题的原因估计在这一行代码
在你点击外部的时候,我会去搜索你点击的部分是否透传进而回调给basepopup的onOutSideTouch
你可以重写该方法进行你自己的操作~
关于这个问题我留意一下,因为我自己的测试并不能覆盖所有的场景,某些场景下确实可能会造成一些bug
请更新到最新版本试试
demo测试结果如下:
无后续反馈,close
最新版本,在MIUI13上我也遇到了这个崩溃,setOutsideTouchable(true)和setOutSideDismiss(true),多次两根手指同时点内容和外部,就会出现这个崩溃。
最新版本,在MIUI13上我也遇到了这个崩溃,setOutsideTouchable(true)和setOutSideDismiss(true),多次两根手指同时点内容和外部,就会出现这个崩溃。
有报错日志吗。这两个一起使用会有可能导致popup dismiss但还要分发事件给外部,进而导致NPE崩溃
我们的页面效果是仿照大众点评的那个评分。
其他机型没有问题,MIUI12也没有,升级到MIUI13就会出现。