android – 如何使几个不同的屏幕配置映射到一小组布局而不必复制我的布局XML的部分?

我的应用程序显示单窗格UI或双窗格UI,具体取决于屏幕配置.在较小的屏幕上,它应该是纵向和横向的单窗格.在中型屏幕(任何“最小宽度”为600dp及以上)的情况下,横向方向可以很好地适应双窗格布局,但在纵向方向上,它应该使用单窗格布局.在较大的屏幕上,它应该在两个方向上使用双窗格布局.我还想支持3.2样式限定符(如sw600dp和sw720dp)以及旧的“大小桶”限定符(“xlarge”).

最直接的方法是创建几个不同的XML布局文件,每个配置一个

> res / layout-sw600dp-land / main.xml
> res / layout-sw600dp-port / main.xml
> res / layout-sw720dp-land / main.xml
> res / layout-sw720dp-port / main.xml
> res / layout-xlarge-port / main.xml
> res / layout-xlarge-land / main.xml
> res / layout-port / main.xml
> res / layout / main.xml

因此,在这8个XML文件中存在大量代码重复,这些文件基本上只描述了两个不同的布局.

如何在不必维护所有这些重复的XML文件的情况下执行此操作,这是一个维护问题?

解决方法

您可以使用布局别名.您应该在两个名为“onepane.xml”和“twopanes.xml”的XML文件中定义两个布局,而不是直接在每个屏幕配置的XML文件中描述您的布局.这些文件进入res / layout.

现在,您必须将这些布局映射到不同的屏幕配置,这就是“布局别名”技术派上用场的地方.对于每个屏幕限定符组合,在res / values-X / layout.xml中创建XML文件,其中X是限定符组合.在该文件中,声明一个布局资源,指向@ layout / onepane或@ layout / twopanes,视情况而定:

RES /价值观sw600dp土地/ layout.xml:

<resources>
  <item name="main" type="layout">@layout/twopanes</item>
</resources>

RES /值-sw600dp端口/ layout.xml:

<resources>
  <item name="main" type="layout">@layout/onepane</item>
</resources>

对您的其他配置组合执行相同的操作,这样您就可以完成您正在寻找的内容:您可以将两个布局(onepane和twopane)映射到多个不同的屏幕配置,而无需复制布局.

有关此内容的更多信息,请查看Android培训的“支持多个屏幕”课程:
http://developer.android.com/training/multiscreen/screensizes.html#TaskUseAliasFilters

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...