【问题标题】:Android - Best way to store multiple layout variantsAndroid - 存储多个布局变体的最佳方式
【发布时间】:2016-08-05 16:44:25
【问题描述】:

在我的测验应用程序中有 3 种测验模式: 多选、单选和填空文本。

到目前为止,我实现了多项选择模式的布局,如下所示

我在这里使用复选框。对于单一选择,我将使用单选按钮和填充空白文本文本字段。 我将复选框打包在相对布局内的附加线性布局中。 这意味着我只需要更改这个线性布局。

我是否应该在布局文件中为 3 种模式创建 3 个内部线性布局(并默认使它们不可见)?或者有没有更好的方法来处理这个问题。

【问题讨论】:

  • 我会使用 Fragments,您可以根据需要使用的布局加载正确的 Fragment,因此您还可以拥有一个控制器来处理用户给出的答案
  • @LucaNicoletti 但是,他们也会使用布局。我相信 OP 正在询问定义这些布局的最佳方法是什么
  • 相对布局,永远是最好的

标签: android android-layout android-linearlayout android-relativelayout


【解决方案1】:

ViewStub 可能是您正在寻找的。您可以包含多种布局,并且只对您需要的一种进行扩展。

https://developer.android.com/reference/android/view/ViewStub.html

【讨论】:

    【解决方案2】:

    我相信你应该有一个用于测验屏幕布局的布局文件,然后放置选项部分布局,最好的选择是定义单独的布局文件,其中只包含每个问题类型的选项元素,例如:

    <LinearLayout>
        <Checkbox/>
        <Checkbox/>
        <Checkbox/>
        <Checkbox/>
        <Checkbox/>
    </LinearLayout>  // Similarly for other types
    

    然后,在运行时通过addView() 在测验布局中将它们添加到您的父级&lt;RelativeLayout.../&gt;。通过这种方式,您的测验布局将与选项布局的更改分开,并且还可以适应以后添加更多问题类型(如果需要)。

    【讨论】:

    • 谢谢,但是如何在我的测验布局中放置这些测验模式布局的占位符?
    • 有多种方式以编程方式添加布局,如另一个答案中提到的@jt-gilkeson(使用ViewStubs)。
    猜你喜欢
    • 2010-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-10
    • 1970-01-01
    • 2016-06-27
    相关资源
    最近更新 更多