0

我正在开发一个 android 应用程序,它需要在横向和其他屏幕尺寸的平板电脑上有不同的布局。我在不同的文件夹中创建了不同的布局,就像 android 教程 ( http://developer.android.com/training/multiscreen/screensizes.html ) 中建议的那样。

所以我有 layout-xlarge、layout-xlarge-land 等等,布局预览似乎可以识别不同设备的这些布局,但是当我启动我的应用程序时,布局不再按设备识别。以下代码始终返回正常大小的布局:

int screenLayout = context.getResources().getConfiguration().screenLayout;
        screenLayout &= Configuration.SCREENLAYOUT_SIZE_MASK;

switch (screenLayout) {
       case Configuration.SCREENLAYOUT_SIZE_XLARGE:
          initXLargeLayout();
          return;
       default:
          initViePagerDefaultLayout();
          return;
    }

我找不到有类似问题的人。我应该在清单文件中添加一些东西吗?

4

2 回答 2

0

我认为,而不是使用你的int screenLayout你应该做这样的事情:https ://stackoverflow.com/a/9308284/4907293

于 2015-05-17T10:32:26.573 回答
0

这可能是因为您在没有超大屏幕的设备上启动,所以它进入了您的默认设置。你用的是什么设备?

顺便说一句,您不必执行该 switch-case 代码,因为 Android 会为您检测配置并从您的布局文件夹(xlarge、mdpi 等)中进行选择并自动使用适当的布局。

您的文件夹结构应如下所示:

res
├── layout
│   └── activity_main.xml
├── layout-xlarge
|   └── activity_main.xml
└── layout-xlarge-land
    └── activity_main.xml

您只需在代码中执行一次 setContentView(R.layout.activity_main.xml) ,Android 将根据设备选择要使用的那些。

我建议找出您的设备是什么配置,也许它只是一个大或其他尺寸。

于 2015-05-17T10:34:03.180 回答