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

标签 android

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_textsecond_edit_text .

2) 然后你在 Activity 中将其膨胀。或Fragment .

3) 然后,您删除 ViewSwitcher 中的所有现有 View 。因为,正如您所说,ViewSwitcher 中只能有两个 View 。 .

4) 然后添加两个 EditText就在里面ViewSwitcher通过view.findViewById()

还有...

明智的做法是使用另一个名为 text_views_layout 的布局。并执行完全相同的操作,以便您可以切换 EditTextTextView的。

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

好问题。 View 应该存在于布局中,并在可能的情况下与代码分开存在。它让您的生活变得轻松,您可以在布局中使用 View ,因为您有 XML 自动完成功能和预览屏幕,因此您可以准确地知道 View 的外观 - 使您免受以后出现任何令人讨厌的意外。

还有其他替代方案吗?

剥猫皮的方法总是不止一种,这种情况也不异常(exception)。您可以创建两个 ViewSwitcher的和不同的 child 的观点。然后您需要做的是将可见性切换为 View.GONEView.VISIBLE或者。警告?在内存中维护以及对 subview 执行任何操作都会很麻烦,因为您必须记住哪个是可见的,哪个是不可见的。有了我原来的答案,你就不用担心了。

关于android - android中如何在没有ViewSwitcher的情况下将一组TextView转换为EditText?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34240318/

相关文章:

android - 具有合成绑定(bind)和可空性的 Kotlin View

android - 从 ListView 读取 EditText 内容

java - 要在一段时间内被阻止的方法或函数,Java,Android

android - Jetpack 撰写水印或使用 androidx.compose.ui.graphics.Canvas 在位图上书写?

android - 类型不匹配。需要 : Array<Uri>! 找到 : Array<Uri? >

android - 膨胀类android.support.design.widget.NavigationView时出错

android - 以下文件关联已恢复。它们在项目中注册为 DDL 文件类型

java - RenderScript 在 Android Lollipop 中停止工作

android - 我可以使用什么游戏引擎/框架来处理 air mobile 而不会出现 fps 问题?

Android - 应用程序离开时返回主 Activity