[英]How do I programmatically swap out a view control in Android?
我有以下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。
我该怎么做呢?
如果这是您需要的唯一更改,我会通过将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需要不同的值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.