我需要访问另一个b.xml布局中包含的a.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将不会生效。
我想,每个人都明白我要问的是什么。等待好的回复。
谢谢大家。
右边的图像是我想要实现的,剩下的就是我使用当前代码获得的内容。
答案 0 :(得分: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");
}
});
答案 1 :(得分:0)
问题不在于访问所包含布局的View
,而在于您无法实现此布局“重叠”。让我解释一下:如果您在a.xml
按钮下方添加更多观看次数,然后尝试在按钮下方b.xml
放置一些视图,那么它会从b.xml
创建视图来自a.xml
的重叠视图,但这尚未在Android中实现(但是?)。所以,你唯一能做的就是把android:layout_below="@id/a_layout"
作为@HoàngToản建议。
P.S。您可以使用此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>