我在我的应用程序中也遇到了这样的问题。但是我找到了一个很好的解决方案。
我只有一个适用于平板电脑的布局,目录名称为
layout-sw600dp
。
现在,当涉及高度和宽度问题时,我创建了几个不同的
values
目录,在其中放置了
dimensions
、
font size
和其他存根。因此,在平板电脑屏幕的
layout
中将没有
constant
值。
androd:layout_width:"60dp" // i drop this scenario
androd:layout_width:"@dimen/tab_width" // i used this scenario
你的values
目录名称将会是这样的
values-xlarge
values-large
所有的值都将从您的值目录中获取。它不会创建不同的布局,但一个布局可以被多次使用。
以下是来自Developer.android网站的话语。
配置示例
为了帮助您针对不同类型的设备定位一些设计,这里有一些典型屏幕宽度的数字:
320dp: a typical phone screen (240x320 ldpi, 320x480 mdpi, 480x800 hdpi, etc).
480dp: a tweener tablet like the Streak (480x800 mdpi).
600dp: a 7” tablet (600x1024 mdpi).
720dp: a 10” tablet (720x1280 mdpi, 800x1280 mdpi, etc).
使用表2中的大小限定符,您的应用程序可以在手持设备和平板电脑之间使用任意数量的宽度和/或高度来切换不同的布局资源。例如,如果600dp是您的平板电脑布局支持的最小可用宽度,您可以提供这两组布局:
res/layout/main_activity.xml # 用于手持设备
res/layout-sw600dp/main_activity.xml # 用于平板电脑
===
在这里,您可以看到,1280*720的布局位于
layout-sw720dp
下,因此您应该使用此选项来决定差异,而不是创建
layout-normal-xlarge
。您难道不是通过其
最小宽度
来识别不同吗?因为,android提供了用于不同图像的
drawables
目录,唯一的区别是其分辨率。您已经有了以上的解决方案。
编辑
然后你必须开发不同的布局。没有其他选择。我在
http://jamil.fluidsoul.net/2011/03/06/creating-android-applications-for-multiple-screen-sizes找到了相关信息。
Low density Small screens QVGA 240x320 (120dpi):
layout-small-ldpi (240x320)
layout-small-land-ldpi (320x240)
Low density Normal screens WVGA400 240x400 (x432) (120dpi):
layout-ldpi (240 x 400 )
layout-land-ldpi (400 x 240 )
Medium density Normal screens HVGA 320x480 (160dpi):
layout-mdpi (320 x 480 )
layout-land-mdpi (480 x 320 )
Medium density Large screens HVGA 320x480 (160dpi):
layout-large-mdpi (320 x 480 )
layout-large-land-mdpi (480 x 320)
Galaxy Tab ( 240 dpi ):
layout-large (600 x 1024)
layout-large-land (1024 x 600)
High density Normal screens WVGA800 480x800 (x854) (240 dpi):
layout-hdpi (480 x 800)
layout-land-hdpi (800 x 480)
Xoom (medium density large but 1280x800 res) (160 dpi):
layout-xlarge (800 x 1280)
layout-xlarge-land (1280 x 800)