ViewSwitcher 只能用于其中的两个子级。但是要将一组textviews转换为Edittexts,有什么方法呢?
最佳答案
用其他 View 替换 View 很容易,但是转换 - 我不这么认为。
要替换 View ,您只需执行如下操作:
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 为:first_edit_text
和second_edit_text
.
2) 然后你在 Activity
中将其膨胀。或Fragment
.
3) 然后,您删除 ViewSwitcher
中的所有现有 View 。因为,正如您所说,ViewSwitcher
中只能有两个 View 。 .
4) 然后添加两个 EditText
就在里面ViewSwitcher
通过view.findViewById()
还有...
明智的做法是使用另一个名为 text_views_layout
的布局。并执行完全相同的操作,以便您可以切换 EditText
与TextView
的。
但是为什么将 EditText 放在布局中而不以编程方式创建它们?
好问题。 View 应该存在于布局中,并在可能的情况下与代码分开存在。它让您的生活变得轻松,您可以在布局中使用 View ,因为您有 XML 自动完成功能和预览屏幕,因此您可以准确地知道 View 的外观 - 使您免受以后出现任何令人讨厌的意外。
还有其他替代方案吗?
剥猫皮的方法总是不止一种,这种情况也不异常(exception)。您可以创建两个 ViewSwitcher
的和不同的 child 的观点。然后您需要做的是将可见性切换为 View.GONE
和View.VISIBLE
或者。警告?在内存中维护以及对 subview 执行任何操作都会很麻烦,因为您必须记住哪个是可见的,哪个是不可见的。有了我原来的答案,你就不用担心了。
关于android - android中如何在没有ViewSwitcher的情况下将一组TextView转换为EditText?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34240318/