4

我想为横向和纵向设置不同的布局。但是两个方向最终都使用相同的布局 xml。我在 StackOverflow 上回答了十多个问题,但没有一个能解决我的问题。

在布局下我有一个activity_main.xml文件。如本答案所述,我有用于不同横向布局的文件夹:

layout/  
   activity_main.xml 
   layout-land-hdpi/
      activity_main.xml
   layout-land-ldpi/ 
      activity_main.xml
   layout-land-mdpi/ 
      activity_main.xml
   layout-small-land-ldpi/
      activity_main.xml

它们具有相同的activity_main.xml文件,只是背景颜色不同。

我没有android:configChanges在 AndroidManifest.xml 中为 Activity 设置。我没有压倒一切onConfigurationChanged(),因为我没有手动处理方向变化。

我在项目中使用 actionbarsherlock 库。我使用ActionBar Sytele Generator制作了动作栏主题。

来自 AndroidManifest.xml 的 minSdk 和 TargetSdk:

<uses-sdk
    android:minSdkVersion="10"
    android:targetSdkVersion="17" />

我在运行 Android 4.3(Galaxy Nexus)、Android 4.2.2(Nexus 7) 和 Android 2.3.3(Nexus S) 的模拟器上运行代码。结果是一样的。

有什么我做的不对吗?

谢谢!

4

3 回答 3

5

你正在以错误的方式解决这个问题。文件夹layoutlayout-land应该在同一级别。

你需要res/layoutres/layout-land

res
  |_ layout
  |_ layout-land
  |_ layout-...
  |_ layout-...

因此,您的设置应如下所示:

res
  |_ layout
          |_ activity_main.xml
  |_ layout-land-hdpi
          |_ activity_main.xml
  |_ layout-land-ldpi
          |_ activity_main.xml
  |_ layout-land-mdpi
          |_ activity_main.xml
  |_ layout-small-land-ldpi
          |_ activity_main.xml
于 2013-08-12T04:10:40.023 回答
1

您必须以这种方式将所有 layout-land 文件夹定义为 res 文件夹而不是 layout 文件夹:

res/layout-land

不像你那样

res/layout/layout-land 
于 2013-08-12T04:20:09.827 回答
0

可能是您的手机屏幕密度是 xhdpi,您没有为其保留文件夹。还要为 layout-land-xhdpi 保留一个文件夹并尝试。您还应该保留 layout-land-xxhdpi。

或者你可以只拥有 layout-land

于 2013-08-12T04:10:26.457 回答