避免重复 UI 代码
Avoid duplicating UI codes
我想编写新的 UI class,其中包含复选框和标签。目前存在 UI class 具有相同的元素,但它们的元素描述不同。但是两个 UI 的数据模型将是相同的。
因此,将 UI classes(通过复制 GridBagConstraints 和其他东西)分开 是好习惯吗?将公共代码移动到抽象层 并在实现层导出 UI 元素的描述?
您还可以尝试其他一些方法,这样可以避免重复 UI 代码,我会给您举两个例子:
- 您可以使用标签将 UI 代码放入另一个布局文件中,并在您当前的布局中显示它,最后您将能够直接从您当前的 Activity 中调用它或 Fragment 的方式与处理 Fragment 或 Activity class.
根部的其他元素的方式相同
第一个布局文件名为: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 文件中,您将能够调用此文件的 ID include_example_layout,就好像它们是直接在您的 activity_main 文件中声明的一样,因此您将能够重复使用它。
- 第二种方法是创建一个 View 元素,这比第一种方法有一个额外的优势,但有点复杂,问题是您可以将一些 UI 逻辑移动到 class 的新视图元素,例如,如果您想在信息发生某些事情时禁用复选框,您可以将逻辑移至新视图 class.
我不会写关于这个的完整教程,因为它是一个广泛的主题,但我会在其他地方留下一些示例,帮助您理解最基本的概念,您可以通过两种方式构建CustomViews 第一个是扩展视图 class,这将迫使您从头开始创建它,但您也可以扩展其他视图,如 LinearLayout,这将帮助您开始使用 CustomView 的概念(不是在任何情况下都推荐,如果你不明智地使用它,它会减慢你的 UI)
我想编写新的 UI class,其中包含复选框和标签。目前存在 UI class 具有相同的元素,但它们的元素描述不同。但是两个 UI 的数据模型将是相同的。
因此,将 UI classes(通过复制 GridBagConstraints 和其他东西)分开 是好习惯吗?将公共代码移动到抽象层 并在实现层导出 UI 元素的描述?
您还可以尝试其他一些方法,这样可以避免重复 UI 代码,我会给您举两个例子:
- 您可以使用标签将 UI 代码放入另一个布局文件中,并在您当前的布局中显示它,最后您将能够直接从您当前的 Activity 中调用它或 Fragment 的方式与处理 Fragment 或 Activity class. 根部的其他元素的方式相同
第一个布局文件名为: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 文件中,您将能够调用此文件的 ID include_example_layout,就好像它们是直接在您的 activity_main 文件中声明的一样,因此您将能够重复使用它。
- 第二种方法是创建一个 View 元素,这比第一种方法有一个额外的优势,但有点复杂,问题是您可以将一些 UI 逻辑移动到 class 的新视图元素,例如,如果您想在信息发生某些事情时禁用复选框,您可以将逻辑移至新视图 class.
我不会写关于这个的完整教程,因为它是一个广泛的主题,但我会在其他地方留下一些示例,帮助您理解最基本的概念,您可以通过两种方式构建CustomViews 第一个是扩展视图 class,这将迫使您从头开始创建它,但您也可以扩展其他视图,如 LinearLayout,这将帮助您开始使用 CustomView 的概念(不是在任何情况下都推荐,如果你不明智地使用它,它会减慢你的 UI)