在获取RelativeLayout的维度时,R.id中没有RelativeLayout id

时间:2013-07-15 03:08:02

标签: android android-layout android-resources

我正在尝试获取RelativeLayout的尺寸。

许多人告诉我使用以下代码:

    RelativeLayout relativeLayout = (RelativeLayout) findViewById(R.id.myRelativeLayout);
    int layoutWidth = relativeLayout.getWidth();
    int layoutHeight = relativeLayout.getHeight();

我的问题是,我在R.id中找到的所有ID都是按钮,文本视图以及所有类型。没有像布局ID那样的东西!

然后我尝试写:

relativeLayout = (RelativeLayout) findViewById(R.layout.main_activity); 
运行时

relativeLayout为null。所以它也是不正确的。

我是否需要手动将布局ID添加到R.id?我不这么认为。

但是为什么R.id中的布局没有ID?

1 个答案:

答案 0 :(得分:3)

这取决于你的意思是什么布局。默认情况下,在创建活动或XML布局时,它将存储为R.layout.xxx。但是,让我们说,在布局中,你有另一种布局(在这种情况下是嵌套布局),你必须手动“id”你想要引用的布局。

例如:

<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"
    tools:context=".MainActivity" >

    <RelativeLayout
        android:id="@+id/CallMe"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="139dp"
        android:layout_marginTop="130dp" >
    </RelativeLayout>

    <RelativeLayout
        android:layout_width="@+layout/test"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/CallMe"
        android:layout_below="@+id/CallMe"
        android:layout_marginTop="64dp" >
    </RelativeLayout>

</RelativeLayout>

然后你可以通过R.id.CallMe引用第一个相对布局,然后通过R.layout.test引用第二个布局

您可以将其命名为任何名称,它不必是布局或ID。 希望有所帮助