我可以在 Android XML 布局中创建可重用组件吗?

Can I create a reusable component in an Android XML layout?

这是一个简单的代码效率问题,而我正在学习更多关于布局的知识。我正在创建一个复选框网格,每个复选框的大部分属性都相同。每个复选框有 8 个属性,每个复选框有 5 个相同。我可以创建一种我可以重复使用的自定义复选框 class,从而大大简化我的 XML 文件吗?

奖励积分:我可以在我的 XML 文件中创建一个 loop/array,这样我就不必为每个框单独编码了吗?我有 32 行 5 列 = 160 个单独的复选框组件。

为您要在许多地方使用的视图创建一个隔离 xml 文件。之后只需在要使用 xml.

的地方使用 <include/>
      <include
        android:id="@+id/toolbar"
        layout="@layout/common_tool_bar_layout" // your xml name
        app:layout_constraintEnd_toEndOf="parent"/>

样式 values/styles.xml 在样式

中添加通用规则
<style name="MyCheckBoxStyle">
        <item name="android:layout_width">match_parent</item>
        <item name="android:layout_height">wrap_content</item>
        ....
</style>

这样使用-

<CheckBox
..uncommon rules...
style="@style/MyCheckBoxStyle"/>

对于循环,您在错误的层次上进行。创建一个自定义视图,扩展任何布局 class 是最方便的(线性、框架、约束、相对等)。在其构造函数中,循环创建适当数量的子项并将它们添加到自身。然后将此 class 包含在您的 xml.

  1. 您可以将 RecyclerViewGridLayoutManager 一起用于该目的

  2. 也可以动态添加RadioButtonlinearLayout.addView(radioButton);

当然,方法 1 是首选,因为它的性能很好。