RelativeLayout getWidth返回零

时间:2015-09-11 12:40:22

标签: android

首先,我知道这是其他问题的重复,但我无法修复它,所以我创建了自己的问题以寻求帮助。我试图获得RelativeLayout宽度,它最初成功但我不知道我改变了什么,代码只返回零。

这是我的代码:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    ImageView[] imageViewArray = new ImageView[20];
    ArrayList<Float> xarray = new ArrayList<>();
    ArrayList<Float> yarray = new ArrayList<>();
    rlt = (RelativeLayout) findViewById(R.id.layout);
    imageView = (ImageView) findViewById(R.id.imageView);
    rlt.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
        @Override
        public void onGlobalLayout() {
            rlt.getViewTreeObserver().removeOnGlobalLayoutListener(this);
            Toast.makeText(MainActivity.this, "right" + rlt.getWidth(), Toast.LENGTH_SHORT).
                    show();
            layoutwidth = rlt.getWidth();
            layoutheight = rlt.getHeight();
        }
    });
}

这是我的activity_main xml文件:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:id="@+id/layout"
    android:background="@android:color/black"
    android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/imageView"
        android:src="@mipmap/you"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />

</RelativeLayout>

简单的,但尚未奏效,请帮忙吗?

4 个答案:

答案 0 :(得分:2)

这是因为您的布局宽度尚未设置 你应该覆盖onLayout()方法

D:\PyVirtualEnvs\example_py34\Scripts\activate.bat

答案 1 :(得分:0)

通常你会扩展你感兴趣的ViewRelativeLayout}并覆盖onSizeChanged()

https://developer.android.com/reference/android/view/View.html#onSizeChanged(int,%20int,%20int,%20int)

这对你的场景是否有用很难说,因为你的问题非常通用。

答案 2 :(得分:0)

尝试

C:\Users\Sherlock

答案 3 :(得分:0)

也许尝试将视图的代码放入&#34; onPostCreate&#34;方法