- 如何取消默认的背景颜色
- 如何在dismiss()时不执行退出动画
- 点击popupwindow背景部分不想让popupwindow隐藏怎么办
- Service里无法弹出
- 为什么PopupWindow里面的EditText无法粘贴
- 如何不让PopupWindow的蒙层覆盖状态栏
- 如何点击back键不关闭BasePopup
- setAlignBackgroundGravity无效">为什么setAlignBackgroundGravity无效
- 为什么外面的view可滑动的时候,basepopup不随着滑动而更新位置
- 为什么在api17下,含有AdapterView的Popup会崩溃
- 为什么BasePopup的宽度不对或者留有一条缝隙
- 为什么BasePopup不能将锚点View设置为PopupWindow中的View
- 关于导航栏颜色、状态栏颜色等问题
- PopupWindow无法弹出
- BasePopup显示在Dialog/DialogFragment下方
如何取消默认的背景颜色
调用setBackgroundColor(Color.TRANSPARENT)或者setBackground(0)
如何在dismiss()时不执行退出动画
点击popupwindow背景部分不想让popupwindow隐藏怎么办
Service里无法弹出
2.2.1版本开始支持
为什么PopupWindow里面的EditText无法粘贴
PopupWindow内的View是无法获取WindowToken的,而粘贴功能也是一个PopupWindow,它的显示必定需要WindowToken,因此无法粘贴。(根据issue tracker,这就是bug,谷歌至今没有修复)
ISSUE REF:#140
Google Issue Tracker:#36984016
如何不让PopupWindow的蒙层覆盖状态栏
如何点击back键不关闭BasePopup
为什么setAlignBackgroundGravity无效
如文档所说,要使setAlignBackgroundGravity生效,必须先设置setAlignBackground的值为true
ISSUE REF:#135
为什么外面的view可滑动的时候,basepopup不随着滑动而更新位置
如wiki所说,请先设置linkTo方法,如果您自行实现视图变化监听并更新basePopup,请调用update方法
ISSUE REF:#139
为什么在api17下,含有AdapterView的Popup会崩溃
issue | title | 感谢 |
---|---|---|
#148 | 一个错误的记录,以免朋友们踩坑 | leojiao123 |
为什么BasePopup的宽度不对或者留有一条缝隙
请务必留意您是否使用了头条类等修改Density的适配方案,BasePopup只遵循官方的测量方法并没有额外的添加别的测量方式,因此如果因为第三方修改导致的适配问题,本库概不负责
如果您用的是AndroidAutoSize,请尝试issue#13的解决方案:
在任何情况下本来适配正常的布局突然出现适配失效,适配异常等问题,只要重写 Activity 的 getResources() 方法即可,如果是 Dialog、PopupWindow 等控件出现适配失效或适配异常,同样在每次 show() 之前调用 AutoSize#autoConvertDensity() 即可
为什么BasePopup不能将锚点View设置为PopupWindow中的View
会抛出类似于 android.view.WindowManager$BadTokenException: Unable to add window — token android.view.ViewRootImplXXXis not valid; is your activity running?
从2.2.8版本开始支持
关于导航栏颜色、状态栏颜色等问题
PopupWindow没有自己的Window,因此theme、windowflag都是跟随宿主的(宿主一般是Activity)。因此如果BasePopup在显示的时候修改了windowflag等问题,这就等于越界处理了,对于一个基本库来说,这是不被允许的。
因此如果您需要弹窗后修改导航栏颜色、状态栏颜色等,请在show()之前设置您的宿主theme和windowflag,BasePopup会使用宿主的样式的。
PopupWindow无法弹出
请排查以下问题:
- 宿主windowType是否为WindowManager.LayoutParams.TYPE_APPLICATION_PANEL
- WindowManager.LayoutParams.TYPE_APPLICATION_PANEL是PopupWindow使用的windowType,如果dialog强行改为这个type,会导致系统识别为SubWindow,因此不会给windowToken,没有windowToken,则popupwindow是无法弹出来的。
- 相关issue:#325
- 请检查您的布局是否高宽为0 ,可以利用LayoutInspector查看ui相关的问题
- 您可以覆写onShowError(),这里会捕捉所有BasePopup遇到的错误信息。
BasePopup显示在Dialog/DialogFragment下方
请阅读以下文档,留意构造器传参:
BasePopupWindow构造器