点击空白处遮罩层关闭_安卓给相对布局RelativeLayout增加一个通用遮罩层

关注 安卓007 ,免费获取全套安卓开发学习资料

效果图

67d7ada599afab48dcbcf6c8708eb78c.png


image

解决方案

  • 关键代码
    对RelativeLayout增加一个函数扩展
/** * 针对RelativeLayout,显示或隐藏一个遮罩层 * 注意点:不能在onCreate、onViewCreated等界面初始化函数中调用,必须在页面初始化后调用。 * 因为涉及到设置遮罩层的宽度和高度,如果界面未初始化完成,其宽和高都没有固定。 * shouldShow:是否显示遮罩层 * maskColor:遮罩层颜色 */fun RelativeLayout.showMaskLayer(shouldShow: Boolean = true, maskColor: String = "#807F7F7F") {    val maskViewTag = "MASK_VIEW_TAG"    var maskView = findViewWithTag(maskViewTag)    if (shouldShow) {        if (maskView == null) {            maskView = View(context)            maskView.tag = maskViewTag            //设置遮罩层颜色            maskView.setBackgroundColor(Color.parseColor(maskColor))            //屏蔽点击事件            maskView.setOnClickListener { }            addView(maskView, width, height)        }    } else {        maskView?.let { removeView(it) }    }}
  • 使用样例
class MainActivity : AppCompatActivity() {    override fun onCreate(savedInstanceState: Bundle?) {        super.onCreate(savedInstanceState)        setContentView(R.layout.activity_main)        showBtn.setOnClickListener {            relativeLayout.showMaskLayer(true)        }        hideBtn.setOnClickListener {            relativeLayout.showMaskLayer(false)        }    }}

布局文件:

<?xml version="1.0" encoding="utf-8"?>

完整源代码

https://gitee.com/cxyzy1/maskLayer

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值