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
)















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值