2

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

加分项:我可以在我的 XML 文件中创建一个循环/数组,这样我就不必单独编码每个框了吗?我有 32 行乘 5 列 = 160 个单独的复选框组件。

app_screenshot 代码截图

4

4 回答 4

2

values/styles.xml 中 添加 style 在 style 中添加常用规则

<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"/>
于 2020-03-02T04:18:15.400 回答
2

对于循环,您在错误的级别上进行操作。创建一个自定义视图,扩展任何最方便的 Layout 类(线性、框架、约束、相对等)。在其构造函数中,循环创建适当数量的子代并将它们添加到自身。然后在你的xml中包含这个类。

于 2020-03-02T04:35:18.463 回答
0

为要在许多地方使用的视图创建一个隔离 xml 文件。之后,只需<include/> 在要使用该 xml 的位置使用。

      <include
        android:id="@+id/toolbar"
        layout="@layout/common_tool_bar_layout" // your xml name
        app:layout_constraintEnd_toEndOf="parent"/>
于 2020-03-02T04:14:15.663 回答
0
  1. 你可以使用RecyclerViewwithGridLayoutManager来达到这个目的

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

当然,方法 1 是最优选的,因为它具有良好的性能。

于 2020-03-02T06:14:40.773 回答