除了常规的setWidthsetHeight来设置BasePopup的宽高,BasePopup还提供了一系列宽高限定的方法,详情请看下表格

方法 描述
setMinWidth(int) 设置BasePopup最小的宽度
setMaxWidth(int) 设置BasePopup最大的宽度
setWidthAsAnchorView(boolean) 设置BasePopup宽度跟随AnchorView(在showPopupWindow(View)时生效)
setMinHeight(int) 设置BasePopup最小的高度
setMaxHeight(int) 设置BasePopup最大的高度
setHeightAsAnchorView(boolean) 设置BasePopup高度跟随AnchorView(在showPopupWindow(View)时生效)
setFitSize(boolean) 设置BasePopup是否允许根据剩余空间自动调整大小,默认允许

上述方法中比较常见的我们不再展示示例,下面我们展示一些不那么容易理解的功能

setFitSize(boolean)

默认值:允许自动调整
通常情况下,BasePopup在剩余空间不足以展示弹窗时,会反向位移,以保证内容能够完整展示。
但有时候我们不希望反向位移,而是希望能够根据剩余空间来调整BasePopup的大小时,我们就可以使用该方法允许BasePopup自适应调整宽高。

【常见场景】
当我们弹窗局宽度/高度为wrap_content时,随着宽度/高度增大,逐渐占满剩余空间,在没有设置setfitSize的情况下,弹窗会反向位移保证完整展示弹窗。
对于该问题,我们可以通过改变根布局宽度/高度为match_parent来占满剩余空间,但是我们需要处理点击到ContentView的事件,略微麻烦。
而如今只需要设置该API即可,但是请务必留意您的剩余空间大小,过小的剩余空间可能会导致弹窗实际宽度/高度过小。

示例

ezgif-6-d7fa7824acf1.gif