避免重复UI代码

时间:2018-06-19 02:00:48

标签: java user-interface code-duplication

我想编写包含Check框和Label的新UI类。目前,现有的UI类具有相同的元素,但它们的元素描述不同。但两个UI的数据模型将是相同的。

为每个保留单独的UI类(通过复制GridBagConstraints和其他内容)或将公共代码移动到抽象层并导出描述实现级别的UI元素?

1 个答案:

答案 0 :(得分:0)

您可以尝试其他一些内容,这样可以避免重复使用UI代码,我将为您提供2个示例:

  1. 您可以使用标记将UI代码放在另一个布局文件中并在当前布局中显示,最后您可以直接从当前活动或片段中调用它,就像使用它一样。 Fragment或Activity类根目录下的其他元素。
  2. Re-using layouts

    名为:include_example_layout.xml

    的第一个布局文件
    <merge xmlns:android="http://schemas.android.com/apk/res/android">
    
        <TextView
            android:id="@+id/textView_includeExampleLayout_label"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    
        <CheckBox
            android:id="@+id/checkBox_includeExampleLayout_valid"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    
    </merge>
    

    第二个布局文件名为:activity_main.xml

    <LinearLayout>
    
        <include layout="@layout/toolbar_search_algolia"/>
    
    </LinearLayout>
    

    从MainActivity文件中,您可以调用此文件include_example_layout的ID,就像它们直接在您的activity_main文件中声明一样,这样您就可以重复使用它。

    1. 第二个是创建一个View元素,这对第一个方法有一个额外的好处,但稍微复杂一点,就是你可以将一些UI逻辑移动到新的View元素的类中,例如,如果要在信息发生时禁用复选框,则可以将逻辑移动到新视图类。
    2. Custom View

      我没有写一篇关于此的完整教程,因为这是一个很好的主题,但我会在其他地方留下一些例子来帮助你理解最基本的概念,有两种方法可以帮助你可以构建CustomViews,第一个是扩展View类,它会强制你从头开始创建它,但你也可以像LinearLayout一样扩展其他视图,这将有助于你开始使用CustomView的概念(不建议在在任何情况下,如果您不明智地使用它,它可能会降低您的用户界面)

      Example extending LinearLayout

      Example extending View