我有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可见,我该怎么办呢。
答案 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);
}