4

为了支持不同的分辨率,我们需要对布局文件进行变化,如支持多个屏幕中所述。假设您不打算显示 UI 的不同排列,而只是想适当地拉伸,那么您的变化主要是关于不同的权重。至少到目前为止我的应用程序就是这种情况。

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

我想到了两个选择:

  1. 在代码中动态更改值
    • 缺点是您的布局相关工作会溢出到代码中。我真的不喜欢这个。
  2. 制作子布局以提取常用布局元素
    • 缺点是您的布局的层次结构会更深且混乱,因此很难弄清楚发生了什么。尽管如此,由于Hierarchy Viewer,这比选项#1 更好。我不确定这种方法是否总是可行的。

如果你能分享你的技巧来解决这个问题,将不胜感激。

4

1 回答 1

1

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

我发现支持多个屏幕res/drawable中描述的配置限定符不仅适用res/layoutres/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资源,但我认为它也适用于样式和主题,因此如果您的布局自定义不仅仅是大小或重量,您可以在值中定义样式并使用它。

于 2012-09-29T21:18:03.373 回答