具有一个静态xml的动态视图

时间:2011-06-01 06:37:40

标签: android

我现在有一个xml文件,它在LinearLayout中有一个TableLayout。 TableLayout中有带按钮的TableRows。在我的Java代码中,我为每个按钮执行了setOnClickListener。

问题是我有几个这样的xml文件是完全相同的,除了在xml中不同按钮的ID和文本不同。

所以一个文件就是

<Button android:id="@+id/one" android:text="one" /> 
<Button android:id="@+id/two" android:text="two" /> 

和另一个文件

<Button android:id="@+id/three" android:text="three" />
<Button android:id="@+id/four" android:text="four" />

在Java中,在switch / case语句的一部分中我有一个案例:

setContentView(R.layout.a);
Button bOne = (Button) findViewById(R.id.one);
Button bTwo = (Button) findViewById(R.id.two);

另一个我有:

setContentView(R.layout.b);
Button bThree = (Button) findViewById(R.id.three);
Button bFour = (Button) findViewById(R.id.four);

冗余发送到两个以上的xml文件,这只是一个例子。

有没有办法做到这一点,没有多个布局文件,但要在一个布局文件中执行此操作? xml文件都完全相同,但是对于按钮的id和text部分。

我真的不在乎这是怎么做的 - 在Java中,在xml中,或者然而。这只是我偶尔对布局做了一些小调整,并且不想继续调整具有完全相同布局的每个文件,而是按钮id和文本。我想调整布局一次,并在我更改布局时使其适用于所有布局。如果我必须将整个布局文件放在Java中,那就没问题了。

3 个答案:

答案 0 :(得分:1)

只保留一个xml文件(a.xml)。说两个按钮的ID为id1id2。使用setContentView(R.layout.a);。接下来声明2个按钮说b1b2。设置b1 = (Button) findViewById(R.id.id1)b2 = (Button) findViewById(R.id.id2)。将setOnClickListener放入switch-case

中的按钮

答案 1 :(得分:0)

如果它总是只有那两个按钮,你可以有一个变量跟踪任意int,代表你所在的屏幕。保持相同的按钮,更改其文本/布局参数,并在OnClick()方法上测试该变量,以查看您所在的屏幕。

答案 2 :(得分:0)

为什么不丢失xml文件,让它们全部动态化。您可以使用xml中的代码执行所有操作。这是一个教程:Dynamic Layout Tutorials