在Android中访问嵌套布局

时间:2012-04-30 06:58:31

标签: android android-layout

我有3个嵌套布局,我在访问其中的视图时遇到困难。下面的主要xml(A.xml)包括B的单个实例,其中包含多个包含C.xml的实例。 C.xml中有3张图片

A.xml - >这是主要的xml

  <include
        android:id="@+id/b"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        layout="@layout/B" />

B.xml - &gt;这是2级

 <include
        android:id="@+id/c1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        layout="@layout/C" />

    <include
        android:id="@+id/c2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        layout="@layout/C" />

    <include
        android:id="@+id/c3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        layout="@layout/C" />

C.xml - 这是第3级

<ImageView
        android:id="@+id/a1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/img1" />

    <ImageView
        android:id="@+id/a2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/img2" />

    <ImageView
        android:id="@+id/a3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/img3" />

所以在这里,main包括B上的一个实例,它又包含C的多个实例。所以如果我想从B访问id C3和C3我想让a2可见,我该怎么办呢。

2 个答案:

答案 0 :(得分:3)

您可以通过获取每个视图和子视图的引用来访问所有视图,如下所示。

        View view = findViewById(R.id.b);
        view = view.findViewById(R.id.c1);
        ((TextView)view.findViewById(R.id.txt1)).setText("Got the First one");

        view = findViewById(R.id.b);
        view = view.findViewById(R.id.c1);
        ((TextView)view.findViewById(R.id.txt2)).setText("Got the Second one");

        view = findViewById(R.id.b);
        view = view.findViewById(R.id.c2);
        ((TextView)view.findViewById(R.id.txt1)).setText("Got the forth one");

同样您也可以访问其他元素。

答案 1 :(得分:0)

我有一个类似于问题中描述的嵌套布局结构,并且在从主视图中嵌套一个或两个级别的视图时遇到问题。我将Activity的内容视图设置为a.xml,然后从我的Activity中找到我需要的视图(无需从第二级视图中查找第三级视图),如下所示:

@Override
public void onCreate(Bundle savedInstanceState)
{
  super.onCreate(savedInstanceState);
  setContentView(R.layout.a);
  ImageView a1 = (ImageView)findViewById(R.id.a1);
}