gpt4 book ai didi

未显示子项的 Android ViewFlipper 度量

转载 作者:行者123 更新时间:2023-11-29 18:19:58 27 4
gpt4 key购买 nike

我有一个 ViewFlipper在我的主要 Activity View 上。在 onCreate 我实例化添加到 ViewFlipper 的 View 。之后,我将显示的 child 设置为第一个。当单击一个按钮时,我将 ViewFlipper 的显示 subview 切换到第二个 View 。在调用 viewFlipper.setDisplayedChild(1) 之后,我需要进行一些计算并实例化一些基于显示子项的宽度和高度的对象。

这里的主要问题是,第一次(第二次 = 1)显示 subview 时, View 的测量尚未完成。所以我的宽度和高度为 0。如果我返回 (setDisplayedChild(0)) 而不是返回到第二个 child 就可以了(宽度和高度是正确的)。

我对 View 的这种行为做了一些研究,发现有一种方法 [onMeasure](http://developer.android.com/reference/android/view/View. html#onMeasure(int, int)) 可以被覆盖,一切都可以在这里完成。好的,它应该如何。实际上是,但问题是 onMeasure 在每个 View 切换时被调用 4 次。我的发现是,第一次和第三次调用的宽度和高度是全屏大小。第二个和第四个调用是适当的宽度和高度。因为此时我必须实例化新对象,所以在 onMeasure 中执行此操作是不明智的。

还有其他正确的方法吗?是否可以强制测量?我真的需要在屏幕上显示 View 以进行测量吗?

问候兹梅达

最佳答案

您的初始操作(基于显示子项的宽度和高度)应该在测量 ViewFlipper 的子项后调用,您可以使用方法 post 实现,例如:

    viewFlipper.setDisplayedChild(1);

viewFlipper.post(new Runnable() {
@Override
public void run() {
Log.d("test", "w: " + viewFlipper.getCurrentView().getWidth());// not 0
//do some calculations and instantate some objects
}
});

关于未显示子项的 Android ViewFlipper 度量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6030429/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com