如何在两款尺寸为7英寸的平板电脑上设置布局?

4
我有两个7英寸的平板电脑,一个分辨率为800*480,另一个分辨率为1024*600。我遇到以下问题:
1. 两者都可以在layout-mdpi和layout-large上运行,那么我如何创建不同的文件夹来适配这两种分辨率呢?
应用程序在两个平板电脑上都使用mdpi布局的xml文件:
layout-mdpi
layout-hdpi

在平板电脑上运行具有大型布局的应用程序xml:

layout-large
layout-xlarge

我可以实现这个http://developer.android.com/guide/practices/screens_support.html,但对我来说不够全面。
或者
尝试了很多链接,但两个平板电脑运行相同布局仍然存在问题。
3个回答

7

尝试使用这个。它对我有效。

layout-sw600dp

尝试使用“layout-hdpi”适配800*480的屏幕(我猜你已经用过了)。 - Abx
谢谢,它可以使用 layout-sw600dp 来适配 (1024600) 屏幕尺寸,并使用layout-mdpi来适配800480的屏幕尺寸。 - duggu

4

7英寸平板电脑——Android 3.2引入了一种新的方式来为更离散的屏幕尺寸指定资源。这种新技术基于您的布局需要的空间量(例如宽度为600dp),而不是试图使您的布局适合通用大小组(例如大号或超大号)。

res/layout-sw600dp/
res/layout-sw600dp-land
res/layout-sw600dp-port
  • 320dp: 典型的手机屏幕 (240x320 ldpi, 320x480 mdpi, 480x800 hdpi等)。
  • 480dp: 像Streak一样的介于平板电脑和手机之间的设备(480x800 mdpi)。
  • 600dp: 7英寸平板电脑 (600x1024 mdpi)。
  • 720dp: 10英寸平板电脑 (720x1280 mdpi, 800x1280 mdpi等)。

用于区分7英寸和10英寸平板电脑等大小的UI。

  1. res/layout/main_activity.xml # 适用于小于600dp可用宽度的手机
  2. res/layout-sw600dp/main_activity.xml # 适用于7英寸平板电脑(600dp宽和更大)
  3. res/layout-sw720dp/main_activity.xml # 适用于10英寸平板电脑(720dp宽和更大)

xlarge是用于超大屏幕的配置限定符。* 当你将此字符串附加到资源目录名称中(例如layout-xlarge),它会告诉系统这些资源要在具有超大屏幕的设备上使用。


1
我有两个7英寸的平板电脑,一个分辨率为800*480,另一个为1024*600。我遇到了以下问题:
我也遇到了同样的问题。作为解决方法,我在与默认布局相同的布局文件夹中制作了(800*480)的xml文件。
还使用了layout-sw320dp来适配GalaxyNexus等设备,对于7''屏幕平板电脑,我制作了layout-sw600dp布局,对于10''屏幕平板电脑,我制作了layout-sw700dp布局。
例如:您有名为"activity_main.xml"的xml文件。

1) 在 layout 文件夹中 -> 放置按照 Nexus One(480 * 800 hdpi)布局的 activity_main.xml

2) 在 layout-sw320dp 文件夹中 -> 放置按照 Galaxy Nexus(720 * 1280 xhdpi)设备布局的 activity_main_tab.xml,该设备的布局应从 layout-600dp 中获取,但将从 layout-320dp 中获取布局

3) 在 layout-600dp 文件夹中 -> 放置适用于7英寸平板电脑屏幕的 activity_main_tab.xml 布局

4) 在 layout-700dp 文件夹中 -> 放置适用于10英寸平板电脑屏幕的 activity_main_tab.xml 布局

在按照上述方式格式化布局后,我检查了设备的运行时宽度和高度,并相应地设置了布局文件。

if (displayWidth >= 552 && displayHeight >= 976 || displayWidth >= 976
                && displayHeight >= 552) { 
   Log.i(TAG, "in tab xml");            
   setContentView(R.layout.activity_main_tab); 
}else{ 
Log.i(TAG, "in Simple xml");
    setContentView(R.layout.activity_main); 
}

希望这会有所帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接