PopupWindow中的ContentView 如果宽高属性设置为具体数值
如
<LinearLayout
android:background="@color/purple_200"
android:layout_width="200dp"
android:layout_height="200dp">
</LinearLayout>
同时给PopupWindow设置宽高为WRAP_CONTENT
val popupWindow=PopupWindow(popupBinding.root,ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT)
那么在调用show方法时,会发现popupWindow已经show了,但是我们看不到他。应该是宽高都为0了。
原因是,PopupWindow设置的宽和高属性,是给contentView中最外层的View设置的,等于用WRAP_CONTENT覆盖了200dp,如果这个view没有子View,或者子view没有合适的宽高属性,就会导致宽高为0
解决方法
最好是给PopupWindow的宽高设置为具体数值,如
//这里应该写200dp转换为px后的数值
val popupWindow=PopupWindow(popupBinding.root,200,200)
或者设置为WRAP_CONTENT,同时给contentView的最外层里再包一层满足自己宽高要求的View
修改popupWindow设置动画无效
popupWindow.animationStyle=R.style.AnimBottom1
上面这一句的作用是为popupWindow设置show和dismiss的动画效果,但有的时候会发现设置后没有生效,或是修改了style文件后发现动画效果还是原来的。手动把app卸载,重新run一下就好了