private fun initPop() { val popupView = LayoutInflater.from(context).inflate(R.layout.pop_filter, null) //初始化一个PopupWindow,width和height都是WRAP_CONTENT popupWindow = PopupWindow( ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT) popupWindow.contentView = popupView popupWindow.setBackgroundDrawable(ColorDrawable(0x00000000)) // popupWindow.isOutsideTouchable = true // popupWindow.isFocusable = true //设置PopupWindow动画 // popupWindow.animationStyle = R.style.a //设置是否允许PopupWindow的范围超过屏幕范围 popupWindow.isClippingEnabled = true }设置焦点或设置 外部可点击 会拦截点击事件,引发 开关 pop的控件setOnClick时 不能获取正确的值
半透明
1.activity半透明
/** * 设置添加屏幕的背景透明度 * * @param bgAlpha * 屏幕透明度0.0-1.0 1表示完全不透明 */ private fun setBackgroundAlpha(bgAlpha: Float) { val lp = (context as Activity).window .attributes lp.alpha = bgAlpha (context as Activity).window.attributes = lp }在弹出和收起时 设置 0.5 和1 即可
2.设置 pop覆盖整个屏幕
a.pop中最外层一定设置,这样整个布局除了设置background的控件,其余均透明
android:background="#b0000000"b.在初始话pop时设置pop的高度 ,height是pop设置的高度,(可计算获得,我是 直接获得此方向所有控件的高度相加)
popupWindow = PopupWindow(
ViewGroup.LayoutParams.WRAP_CONTENT, height
)