我有以下XML布局驱动我的UI:
<TableLayout
android:id="@+id/tableLayout1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:stretchColumns="1"
android:layout_margin="10dp" >
<TableRow
android:id="@+id/tableRow1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Username:" />
<EditText
android:id="@+id/txtUsername"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textPersonName" >
</EditText>
</TableRow>
<!-- more rows are here -->
</TableLayout>
我想在我的应用的另一部分重复使用此布局,但在一个地方稍微改变一下。我希望将EditText
txtUsername
更改为TextView
,在同一位置和所有内容。所以基本上我在代码中交换TextView的TextView。
我该怎么做?
答案 0 :(得分:2)
如果这是您需要的唯一更改,我会通过将TextView添加到您的布局(默认为View.GONE)并在适当的位置使用View.setVisibility(View.VISIBLE)和View.setVisibility(View.GONE)来实现。交换它们。
<TableRow
android:id="@+id/tableRow1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Username:" />
<EditText
android:id="@+id/txtUsername"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textPersonName" >
</EditText>
<TextView
android:id="@+id/txtUsernameTV"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textPersonName"
android:visibility="gone">
</TextView>
</TableRow>
然后在你的java中你可以保留你已经拥有的活动,在新活动中(你想要TextView的地方)做这样的事情:
editTextReference.setVisibility(View.GONE);
textViewReference.setVisibility(View.VISIBLE);
请注意,两个视图的ID需要不同的值。