小编典典

Android:允许平板电脑纵向和横向,但在手机上强制纵向?

all

我希望平板电脑能够以纵向和横向显示(sw600dp 或更高),但手机仅限于纵向显示。我找不到任何有条件地选择方向的方法。有什么建议么?


阅读 111

收藏
2022-06-25

共1个答案

小编典典

这是使用资源大小限定符的好方法。

将此 bool 资源作为 bools.xml 或其他任何内容放在 res/values 中(文件名在这里无关紧要):

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <bool name="portrait_only">true</bool>
    </resources>

把这个放在 res/values-sw600dp 和 res/values-xlarge 中:

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <bool name="portrait_only">false</bool>
    </resources>

有关在 Android Studio中添加这些目录和文件的帮助,请参阅此补充答案。

您可以在 Android Studio 中执行以下步骤来添加res/values-sw600dpres/values-large目录及其bools.xml文件。

值-sw600dp

首先,从 Project 选项卡中选择导航器中的 Project(而不是 Android)过滤器。

在此处输入图像描述

然后右键单击该app/src/main/res目录。选择新建> Android 资源目录

选择最小屏幕宽度,然后按>>按钮。

在此处输入图像描述

输入600最小的屏幕宽度。目录名会自动生成。说OK。

在此处输入图像描述

然后右键单击新创建的values-sw600dp文件。选择新建>值资源文件。键入bools名称。

值-大

values-large仅当您支持 Android 3.2(API 级别 13)之前的版本时,才需要添加目录。否则你可以跳过这一步。该values-large目录对应于values-sw600dp. (values-xlarge对应于values-sw720dp。)

要创建values-large目录,请遵循与上述相同的步骤,但在这种情况下,请选择“大小”而不是“最小屏幕宽度”。选择。目录名会自动生成。

在此处输入图像描述

像以前一样右键单击目录以创建bools.xml文件。

然后,在您的活动的 onCreate 方法中,您可以执行以下操作:

    if(getResources().getBoolean(R.bool.portrait_only)){
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    }

在最小宽度方向上超过 600 dp 或在 Android 3.2 之前的设备(基本上是平板电脑)上超过 600 dp
的设备将表现得像正常一样,基于传感器和用户锁定的旋转等。其他一切(手机,几乎)将只是肖像。

2022-06-25