0

在我用数组声明后,我不知道我的 imageView 有什么问题,结果为 0

        imageViewTarget = new ImageView[] {
            (ImageView) findViewById(R.id.imageViewTarget1),
            (ImageView) findViewById(R.id.imageViewTarget2),
            (ImageView) findViewById(R.id.imageViewTarget3),
            (ImageView) findViewById(R.id.imageViewTarget4),
            (ImageView) findViewById(R.id.imageViewTarget5),
            (ImageView) findViewById(R.id.imageViewTarget6),
            (ImageView) findViewById(R.id.imageViewTarget7),
            (ImageView) findViewById(R.id.imageViewTarget8) };

    for (int i = 0; i < imageViewTarget.length; i++) {

        System.out.println("Left : "
                + imageViewTarget[i].getLeft() + " Right : "
                + imageViewTarget[i].getRight());
    }

任何的想法?

4

3 回答 3

0

您刚刚创建了视图,因此视图默认值设置为零..在视图附加到窗口后您将获得正确的值..尝试在onWindowFocusChanged()方法中获取这样的值..

@Override
public void onWindowFocusChanged(boolean hasFocus) {
    super.onWindowFocusChanged(hasFocus);
    Button button = (Button) findViewById(R.id.button2);
    System.out.println(button.getLeft());
    System.out.println(button.getRight());
}
于 2013-11-08T10:42:49.077 回答
0
getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
    public void onGlobalLayout() {
        getViewTreeObserver().removeGlobalOnLayoutListener(this);

        // all views has been placed
        // make your calculation now...
    }
});

@kaylan pvs:onWindowFocusChanged不是解决问题的可靠方法。它可能会被多次调用,并且无法保证在onWindowFocusChanged触发时已放置所有视图。

于 2013-11-08T10:53:38.480 回答
0

我很确定您正在尝试直接从 onCreate() 中的视图中提取视图值,这不是视图生成其视图属性的点。如果我没记错的话,它们会在 onResume() 中生成它们的属性。

于 2013-11-08T11:10:04.980 回答