我有一个视图,当它被禁用时,它会执行一些自定义绘制:
override fun onDraw(canvas: Canvas) {
// Drawing...
if (!this.isEnabled) {
// Custom drawing...
}
}当父级中的一个被禁用时,它也绘制此禁用状态是合乎逻辑的。但是,即使其中一个父视图被禁用,isEnabled也是真的。
android:duplicateParentState看起来可以做到这一点,但我有时会深度嵌套这个视图,它会转移所有状态(按下,等等)。
处理这个问题的规范方法是什么?
发布于 2020-10-06 08:26:09
这是我目前的解决方案:
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
}它起作用了,但每次抽奖都要经过所有的家长。
https://stackoverflow.com/questions/64217775
复制相似问题