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