我想创建一个View
具有显示逻辑的自定义来确定其自身的可见性。为了保持该逻辑包含并易于重用,我创建了一个View
子类,覆盖getVisibility()
并计划使View
可能导致其可见性改变的事件发生时无效......只是发现 aView
的可见性只能是通过调用setVisibility()
而不是覆盖来更改getVisibility()
。请参阅 Romain Guy对此问题的回答。
是否有一个特定的方法作为正常View
生命周期/渲染过程的一部分被调用,这将是理想的覆盖,我会在其中调用setVisibilty()
?由于我已经调用invalidate()
,覆盖它调用setVisibility()
工作。但那是理想的地方吗?似乎设置 aView
的属性invalidate()
会违反最佳实践。
澄清: Andr 指出有很多事情可能会导致 customView
的可见性发生变化,并且这些场景非常具体地用于自定义视图的使用。这是非常真实的。但这个问题不是关于如何触发外观刷新 -invalidate()
似乎是告诉 Android View 的外观发生变化的标准方式,不是吗?相反,这是一个关于自定义失效后在哪里调用的最佳实践问题。我不想在流程的错误部分进行更改,例如。如果有人有链接,我很想看看Android的UI渲染过程图。setVisibility()
View
onMeasure()