【问题标题】:How to escape the duplicity in Android?如何摆脱Android中的双重性?
【发布时间】:2012-01-30 12:24:32
【问题描述】:

我的经验和好书告诉我,在代码中重复同样的事情是不好的。但是当我使用 Android 视图时,我经常重复同样的事情甚至 4 次:

在 XML 中两次:

<LinearLayout                    -1
    android:id="@+id/lila"
    ...
>
    ...
</LineraLayout                   -2

两次代码:

     3               4
LinearLayout ll=(LinearLayout) findViewById(R.id.lila);

当然,当我必须更改视图的类型时,我必须在四个地方进行,这会导致错误。在 XML 中,我可以使用重构来同时更改布局类,甚至是视图或小部件。但这并没有多大帮助,因为最危险的不被编译器捕获的差异可能会出现在代码和 XML 之间。后来我不得不浪费时间寻找运行时错误的来源。

还有其他方法可以解决布局中的视图问题吗?没那么危险?

如果没有,你知道一些改变或至少同时检查所有这些地方的技巧吗?

谢谢。

【问题讨论】:

    标签: java android eclipse android-layout coding-style


    【解决方案1】:

    可以帮助您的事情(取决于情况,例如您想对您的LinearLayout 执行的操作)是尽可能通用地声明您的Views。在这里,在您的示例中,如果您不需要任何 LinearLayout 特定方法,则可以将 LinearLayout 保留为 ViewGroup。因此,如果稍后您决定在 xml、RelativeLayoutFrameLayout 等中更改该布局,您将不会遇到任何转换问题。

    您可以对Buttons 或其他Views 采用相同的方法,具体取决于您对它们使用的方法。例如,如果您只是在您的Button 上设置了一个onClickListener,您可以将其引用到View,(例如View button=findViewById(R.id.button);),然后您可以将其更改为ImageView ,并且仍然没有任何转换问题,因为它们都是从 View 扩展而来的。

    所以大行的解决方案:尽可能使用最高级别的level

    【讨论】:

    • 谢谢。但是很可惜,没有什么技巧可以同时修改代码和xml。
    【解决方案2】:

    对于 xml 布局重用,您可以使用包含和合并布局。 http://developer.android.com/resources/articles/layout-tricks-merge.html

    对于Activity,你必须尽可能使用超类引用,因为它为你提供了改变特定对象类的灵活性。

    喜欢而不是使用我们可以

    ViewGroup ll=(ViewGroup) findViewById(R.id.lila);

    现在可以解决相对布局、线性布局、表格布局等问题了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-09
      • 1970-01-01
      • 2011-07-12
      • 1970-01-01
      • 2012-10-28
      • 2021-12-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多