1

对于我的应用程序,我需要在手机上将方向固定为纵向,并在平板电脑上允许纵向和横向。我在这里查看了答案,但我想尝试单独使用 xml 来做同样的事情。我尝试在清单中添加以下行

<activity
android:theme="@style/Theme.ActionBarLargeTitle"
android:name="com.work.activities.MyActivity"
android:screenOrientation="@integer/orientation_supported"
android:exported = "false"/>

在 res/values/dimens.xml 我添加了以下行(1 对应于纵向)

<integer name="orientation_supported">1</integer>

我创建了另一个文件 res/values-sw600dp/dimens.xml 我在其中添加了(-1 对应于未指定)

<integer name="orientation_supported">-1</integer>

在电话上,此代码工作正常,活动始终处于纵向模式。在 Nexus 10" 平板电脑(宽度 800dp)上,此操作失败,并且在纵向模式下已修复。这种方法有什么问题吗?

编辑: 我已经检查了各种值,并且在所有情况下(在所有设备中)都从 res/values/dimens.xml 中提取了值。如果缺少此值,则安装应用程序时会出现错误“安装错误:INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION”。

4

2 回答 2

1

问题是您使用的是-sw600dp限定符,它实际上并不检查方向,而是检查最短边是否至少为 600dp。尝试使用-landor-port限定符。

于 2013-05-30T18:13:28.100 回答
0

这里有两个可能的问题:

  • 确保您的平板电脑正在从 -sw600dp 文件夹中读取数据。我知道这对于 800dp 设备来说可能听起来很奇怪。检查的简单方法是在两个文件夹中添加具有相同键的字符串并显示在TextView.
  • 确保您的平板电脑理解 -1 值。我检查过的电话确实如此。尝试更改为 0 并查看它是否强制横向。
于 2013-05-30T18:25:57.817 回答