【问题标题】:Can I create a reusable component in an Android XML layout?我可以在 Android XML 布局中创建可重用的组件吗?
【发布时间】:2020-06-14 08:54:53
【问题描述】:

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

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

【问题讨论】:

  • 我们以编程方式使用 listview 或 recyclerview,而不是太长的 xml,如果你真的想按照自己的方式做会减慢应用程序和使用样式

标签: android xml class android-layout android-components


【解决方案1】:
  1. 为此,您可以使用 RecyclerViewGridLayoutManager

  2. 还可以动态添加RadioButtons linearLayout.addView(radioButton);

当然,方法 1 是最受青睐的,因为它具有良好的性能。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      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"/>
      

      【讨论】:

      • 正是我想要的。谢谢!!
      【解决方案4】:

      为要在许多地方使用的视图创建一个隔离 xml 文件。之后,只需在要使用该 xml 的地方使用 &lt;include/&gt;

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

      【讨论】:

        猜你喜欢
        • 2011-01-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多