ViewSwitcher只能用于其中的两个孩子。但是对于一组要转换为Edittexts的文本视图,可能有什么方法呢?
答案 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_text
和second_edit_text
。
2)然后,您可以在Activity
或Fragment
。
3)然后,您移除了ViewSwitcher
中的所有现有观看次数,因为正如您所说,ViewSwitcher
中只能有两个观看次数。
4)然后,您在EditText
内ViewSwitcher
添加view.findViewById()
两个text_views_layout
同时... 强>
最好使用另一个名为EditText
的布局并执行完全相同的操作,以便您可以使用TextView
切换ViewSwitcher
。
但为什么EditText在布局中而不是以编程方式创建呢?
好问题。视图应该存在于布局中,并且在可能的情况下与代码分开存在。由于您具有XML自动完成功能和预览屏幕,因此您可以轻松地在布局中使用视图,这样您就可以准确了解视图的样子 - 从以后的任何令人讨厌的惊喜中拯救您。
还有其他替代方案吗?
皮肤猫的方法总是不止一种,这种情况也不例外。您可以创建两个View.GONE
并具有不同的子视图。您需要做的是将可见性切换为View.VISIBLE
和Order [Id, Shipping_AddressId, Receiving_AddressId]
Address [Id, Contact, Line1, City]
。警告?在内存中维护并对子视图执行任何操作都很麻烦,因为您必须记住哪一个是可见的,哪一个不可见。用我原来的答案,你不必担心。