首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检查自定义View是否有禁用的父级?

如何检查自定义View是否有禁用的父级?
EN

Stack Overflow用户
提问于 2020-10-06 08:26:09
回答 1查看 22关注 0票数 0

我有一个视图,当它被禁用时,它会执行一些自定义绘制:

代码语言:javascript
复制
override fun onDraw(canvas: Canvas) {
    // Drawing...

    if (!this.isEnabled) {
        // Custom drawing...
    }
}

当父级中的一个被禁用时,它也绘制此禁用状态是合乎逻辑的。但是,即使其中一个父视图被禁用,isEnabled也是真的。

android:duplicateParentState看起来可以做到这一点,但我有时会深度嵌套这个视图,它会转移所有状态(按下,等等)。

处理这个问题的规范方法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-06 08:26:09

这是我目前的解决方案:

代码语言:javascript
复制
override fun onDraw(canvas: Canvas) {
    // Drawing...

    // Check for both the view and all its parents.
    if (!this.isEnabled || isAnyParentDisabled(parent)) {
        // Custom drawing...
    }
}

private fun isAnyParentDisabled(parent: ViewParent?): Boolean {
    // Recursively check for each parent if it's 
    // a View that has isEnabled set to false.
    val v = parent as? View ?: return false
    return if (v.isEnabled)
        anyParentDisabled(v.parent)
    else
        true
}

它起作用了,但每次抽奖都要经过所有的家长。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64217775

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档