【问题标题】:How to use the same basic layout with different contents in fragments?如何在片段中使用相同的基本布局和不同的内容?
【发布时间】:2017-02-14 18:04:33
【问题描述】:

我有一个 ViewPager,其中包含 3 个不同的页面,它们都有自己的片段 XML 文件。这些片段对于所有 3 个页面基本相同,只是内容不同:第 1 页显示 RadioGroup,第 2 页显示复选框,第 3 页仅显示文本。

在每一页上,顶部都有一个标题和说明,底部有一个按钮。内容显示在描述和按钮之间。

目前我已经复制了片段文件,只是更改了内容部分。但是这个解决方案似乎不是最好的,因为当布局发生变化时,我必须更改 3 个文件。

推荐的方法是什么?扩展 LinearLayout 类?将所有元素放在一个文件中并动态显示/隐藏我需要的元素?有更好的建议吗?

【问题讨论】:

    标签: android android-fragments android-viewpager


    【解决方案1】:

    一种解决方案是您可以拥有页面 XML 文件,并且在您的内容不同的区域中,您可以在该空间中放置一个 ID 为 layoutPlaceholder 的空布局标签,您可以在该空间中以编程方式插入 RadioGroup,即代码中的复选框和文本 XML 布局。

    XML 结构可能如下所示:

    - Page.xml
       - Page_RadioGroup.xml
       - Page_checkbox.xml
       - Page_text.xml
    

    This question explains how to inflate those sub-page xml files inside Page.xml

    如果您想以编程方式创建 RadioGroup、Checkbox 和 Text 内容,而不是拥有 3 个额外的 xml 文件,您也可以这样做,但我个人喜欢将所有元素布局保留在 XML 中。

    【讨论】:

    • 我会试试这个,谢谢!您知道是否有可能在 XML 中完成这一切?我需要的是类似反向包含的东西。这意味着我想指定一个包含基本布局和占位符的文件 (Page.xml)。在每个 Page_*.xml 中,我都会包含 Page.xml 并将占位符覆盖到该文件中。就像你覆盖抽象类一样。内容将是抽象的,而基本布局已经实现并且不必被覆盖。
    • 我不知道。我认为这种问题对于 XML 布局所能做的范围来说太复杂了。我认为唯一的选择是(a)将所有视图放在一个 XML 文件中,并使它们全部不可见并根据需要显示/隐藏(b)在 page.xml 中有一个占位符布局标签以将视图插入(c)有三个单独的 XML 文件。
    • 谢谢 :) 我想我会使用解决方案 b
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多