Android - 如何根据DRY原则管理多个布局文件?

时间:2012-09-27 07:34:43

标签: android layout

为了支持不同的分辨率,我们需要按照Supporting Multiple Screens中的描述制作各种布局文件。假设您不打算显示您的UI的不同排列,但只是想要适当地伸展,您的变化主要是关于不同的权重。到目前为止,我的应用程序至少就是这种情况。

现在,您如何管理使用此结构更改应用程序?由于它多次重复布局,因此应用程序中的一次布局更改会导致多个文件更改。

我想到了两个选择:

  1. 在代码中动态更改值
    • 下行是您的布局相关工作溢出到代码。我真的不喜欢这个。
  2. 使子布局提取公共布局元素
    • 下行是你的布局的层次结构将更加深刻和混乱,因此很难弄清楚发生了什么。尽管如此,由于Hierarchy Viewer,这比选项#1更好。我不确定这种方法是否总能实现。
  3. 如果你可以分享你的技巧来完成这个,那将非常感激。

1 个答案:

答案 0 :(得分:1)

我想我找到了解决方案。如果其他人竖起大拇指,我会接受它作为答案。

我发现Supporting Multiple Screens中描述的配置限定符不仅适用于res/drawableres/layout,也适用于res/values。所以在我的layout/some_layout.xml上,我这样说:

<ImageButton
    android:id="@+id/imagePlay"
    android:layout_width="@dimen/button_size"
    android:layout_height="@dimen/button_size"
    android:scaleType="fitCenter"
    android:src="@drawable/play" />

然后在values/layout.xml文件上定义默认的button_size

<resources>
    <dimen name="button_size">44dp</dimen>
</resources>

values-xlarge/layout.xml文件上,您可以定义xlarge模式button_size

<resources>
    <dimen name="button_size">66dp</dimen>
</resources>

我没有尝试其他values资源,但我认为它也适用于Styles and Themes所以如果你的布局定制比一个大小或重量稍微多一点,你可以定义一个样式在价值观中使用它。