Popupwindow 的使用(kotlin)

private fun initPop() {
        val popupView = LayoutInflater.from(context).inflate(R.layout.pop_filter, null)


        //初始化一个PopupWindowwidthheight都是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
)















你可能感兴趣的:(汇总使用)