首页 > 解决方案 > 用于分配对象属性的 OnWindowFocusChanged 与 OnCreate

问题描述

我的问题围绕 onWindowFocusChanged 方法。我知道作为最佳实践,您应该在 onCreate 方法中为您的对象充气。

我想知道的是:在 onCreate 方法期间,ImageViews 等对象没有完全呈现。因此,您使用 onWindowFocusChanged,Android 文档说一旦活动渲染完成就会调用它。我有 ImageView 对象,我需要获取它们的 X 和 Y 位置,并且(因为屏幕尺寸不同)我不知道它们在屏幕上的确切位置,除非我使用硬编码数字,我不想这样做做。然后,我将根据这些 X 和 Y 数字为其他 ImageView 分配边距。但是,如果我必须等到 onWindowFocusChanged 才能获得 X 和 Y,那么在 onCreate 方法中设置这些数字对我没有任何好处。

所以我的问题是 - 我是否仍然可以在 onWindowFocusChanged 内设置 ImageView 的属性并将它们重新渲染为更新后的属性,还是因为它们已经被渲染而锁定了属性值?

标签: javaandroid

解决方案


尝试在 Activity 类中维护 View 对象,并在 onWindowFocusChanged() 中设置属性后调用postInvalidate ()。希望能帮助到你!


推荐阅读