如何在没有ViewSwitcher的情况下在android中将一组TextView转换为EditText?

时间:2015-12-12 13:23:38

标签: android

ViewSwitcher只能用于其中的两个孩子。但是对于一组要转换为Edittexts的文本视图,可能有什么方法呢?

1 个答案:

答案 0 :(得分:2)

替换其他视图的视图很容易,但转换 - 我不这么认为。

要替换视图,您只需执行以下操作:

LayoutInflater inflater = LayoutInflater.from(this);
View view = inflater.inflate(R.layout.edit_texts_layout, null);

viewSwitcher.removeAllViews();
viewSwitcher.addView(view.findViewById(R.id.first_edit_text));
viewSwitcher.addView(view.findViewById(R.id.second_edit_text));

那么这里发生了什么?

1)您创建一个名为 edit_texts_layout 的布局,其中包含两个EditText个ID,其ID为:first_edit_textsecond_edit_text

2)然后,您可以在ActivityFragment

中对此进行充气

3)然后,您移除了ViewSwitcher中的所有现有观看次数,因为正如您所说,ViewSwitcher中只能有两个观看次数。

4)然后,您在EditTextViewSwitcher添加view.findViewById()两个text_views_layout

同时...

最好使用另一个名为EditText的布局并执行完全相同的操作,以便您可以使用TextView切换ViewSwitcher

但为什么EditText在布局中而不是以编程方式创建呢?

好问题。视图应该存在于布局中,并且在可能的情况下与代码分开存在。由于您具有XML自动完成功能和预览屏幕,因此您可以轻松地在布局中使用视图,这样您就可以准确了解视图的样子 - 从以后的任何令人讨厌的惊喜中拯救您。

还有其他替代方案吗?

皮肤猫的方法总是不止一种,这种情况也不例外。您可以创建两个View.GONE并具有不同的子视图。您需要做的是将可见性切换为View.VISIBLEOrder [Id, Shipping_AddressId, Receiving_AddressId] Address [Id, Contact, Line1, City] 。警告?在内存中维护并对子视图执行任何操作都很麻烦,因为您必须记住哪一个是可见的,哪一个不可见。用我原来的答案,你不必担心。