设计模式以构建一个或多个并排视图

时间:2017-03-31 04:46:14

标签: java android design-patterns

我正在尝试在Android中构建一个动态控件,它使用构建器模式构建一个看起来像这样的视图:

[**文字] [**文字]

基本上,我希望创建一个带有图像和一些文本的视图,并将多个这样的视图组合在一起。

public static class DualBuilder {
        private final Context mContext;
        protected Drawable mFirstButtonIcon;
        protected Drawable mSecondButtonIcon;
        protected String mFirstButtonText;
        protected String mSecondButtonText;

        private DualBuilder(@NonNull final Context context) {
            mContext = context;
        }

        public DualBuilder firstButtonIcon(@Nullable final Drawable firstButtonIcon) {
            super.buttonIcon(firstButtonIcon);
            return this;
        }

        public DualBuilder firstButtonText(@NonNull final String firstButtonText) {
            super.buttonPrimaryText(firstButtonText);
            return this;
        }

        public DualBuilder secondButtonIcon(@Nullable final Drawable secondButtonIcon) {
            mSecondButtonIcon = secondButtonIcon;
            return this;
        }

        public DualBuilder secondButtonText(@NonNull final String secondButtonText) {
            mSecondButtonText = secondButtonText;
            return this;
        }

        public MultiViewControl build() {
            return new MultiViewControl(this);
        }
}

如果我有两个这样的观点,上面将是一个建设者。构造函数将获取构建器变量并使用它们为每个第一/第二视图构造布局。如何发生这些问题的细节不是问题,我只想学习如何以灵活的方式构建这样的东西,以便它可以接受1 ... n个视图。我可以使用什么样的模式来实现这一目标?任何代码示例都将非常感激。

2 个答案:

答案 0 :(得分:0)

Google发布了一个名为Fluxbox layout的新库,可以满足您的需求。

查看此https://github.com/google/flexbox-layout

它会按预期动态添加您的视图。

答案 1 :(得分:0)

我的两便士在这里...我根据自己的经验动态提出了这个问题。 因此,在我看来,您的基本视图内容是图像和字符串。如果我们将此视为一个名为ViewContent的对象结构,那么我们可以想象构建器采用ViewContent对象的组合,因此我们可以将1..n这样的对象作为复合作为输入传递给Builder对象,然后继续对其进行操作。所有这些对象并为你创建一个布局...希望这会有所帮助。