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