1

我需要访问另一个 b.xml 布局中包含的 a.xml 布局中的视图。例如,这是一个.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >

        <Button
            android:id="@+id/xyz"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="XYZ" />
</RelativeLayout>

而且,在 b.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <include
        android:id="@+id/a_layout"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        layout="@layout/a" />

    <TextView
        android:id="@+id/label"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/xyz"
        android:text="Show me below xyz" />
</RelativeLayout>

我必须在 xml 代码中执行它,因为如果我在 Java 中执行它必须在 setContentView() 之后,然后设置 TextView 'label' 的 LayoutParams 将不会生效。

我想,每个人都明白我想问什么。等待好的答复。

谢谢大家。

右边的图像是我想要实现的,左边的图像是我用当前代码得到的。

这就是我用当前的 xml 代码得到的 这就是我想要做的

4

2 回答 2

3

在 b.xml 中,您应该更正:

android:layout_below="@id/xyz"

android:layout_below="@id/a_layout"

然后你可以在你的代码中使用它(这里我把它放在 onCreate 中):

setContentView(R.layout.b);    
((Button)findViewById(R.id.xyz)).setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            ((TextView)findViewById(R.id.label)).setText("clicked on XYZ button");
        }
    });
于 2012-04-10T08:13:54.237 回答
0

问题不在于访问View包含的布局,而在于您无法实现此布局“重叠”。让我解释一下:如果您在按钮下方添加更多视图a.xml,然后尝试在b.xml按钮下方放置一些视图,那么它将使视图来自b.xml重叠视图a.xml,但是这还没有在 Android 中实现(还没有? )。所以,你唯一能做的就是android:layout_below="@id/a_layout"按照@Hoàng Toản 的建议。

PS您可能会观察到与此a+b布局组合相同的行为:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >

        <Button
            android:id="@+id/xyz"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="XYZ" />
    </RelativeLayout>

    <TextView
        android:id="@+id/label"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/xyz"
        android:text="Show me below xyz" />
</RelativeLayout>
于 2012-04-10T08:35:33.297 回答