我通常通过代表一种布局的 fragment 来组织我的代码/逻辑。现在我需要一些相对简单的表单来从用户那里获取输入数据,这些表单在目的上有些相关。
假设我有 3 个屏幕,我可以创建 3 个 fragment 来处理它们(显示 View 、读取输入、提交……)。或者我应该使用一个 fragment ,并使用 FrameLayout 创建一堆布局。我在想,堆叠所有 3 个 View 并隐藏/显示我喜欢的 View 。但是 documentation说
Generally, FrameLayout should be used to hold a single child view, because it can be difficult to organize child views in a way that's scalable to different screen sizes without the children overlapping each other
有什么好的方法可以做到这一点,或者我应该为此创建多个 fragment (这样做的缺点是很多小类和重复代码。我可能会使用基类,但仍然喜欢探索其他选项)
谢谢。
最佳答案
如果 View 在 FrameLayout
中彼此重叠,或者事实上它们应该重叠,因为您希望一次只显示一个。 FrameLayout
当然可以显示堆叠的 subview ,每个 subview 都占据了它的全部宽度和高度,如果您将未使用 View 的可见性设置为 INVISIBLE
或 GONE
,如果它们恰好位于用户与之交互的可见 View 上方,它们将不会拦截屏幕按下或获取焦点。
在可读性和代码维护方面,我认为交换 fragment 更有意义,即使有更多的内存开销。布局管理可以封装在各个 fragment 中,您无需担心显示/隐藏 View ,因为 fragment 事务会处理这方面的问题。
关于android - 使用框架布局渲染多个 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14667260/