这是一个简单的代码效率问题,而我正在学习更多关于布局的知识。我正在创建一个复选框网格,每个复选框大部分都具有相同的属性。每个复选框有 8 个属性,其中 5 个属性相同。我可以创建一种可以重复使用的自定义复选框类,从而大大简化我的 XML 文件吗?
加分项:我可以在我的 XML 文件中创建一个循环/数组,这样我就不必单独编码每个框了吗?我有 32 行乘 5 列 = 160 个单独的复选框组件。
这是一个简单的代码效率问题,而我正在学习更多关于布局的知识。我正在创建一个复选框网格,每个复选框大部分都具有相同的属性。每个复选框有 8 个属性,其中 5 个属性相同。我可以创建一种可以重复使用的自定义复选框类,从而大大简化我的 XML 文件吗?
加分项:我可以在我的 XML 文件中创建一个循环/数组,这样我就不必单独编码每个框了吗?我有 32 行乘 5 列 = 160 个单独的复选框组件。
在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"/>
对于循环,您在错误的级别上进行操作。创建一个自定义视图,扩展任何最方便的 Layout 类(线性、框架、约束、相对等)。在其构造函数中,循环创建适当数量的子代并将它们添加到自身。然后在你的xml中包含这个类。
为要在许多地方使用的视图创建一个隔离 xml 文件。之后,只需<include/>
在要使用该 xml 的位置使用。
<include
android:id="@+id/toolbar"
layout="@layout/common_tool_bar_layout" // your xml name
app:layout_constraintEnd_toEndOf="parent"/>
你可以使用RecyclerView
withGridLayoutManager
来达到这个目的
也可以RadioButton
动态添加slinearLayout.addView(radioButton);
当然,方法 1 是最优选的,因为它具有良好的性能。