布局是否只存在于layout-land文件夹中?

时间:2014-02-27 10:13:51

标签: android layout landscape portrait

我的应用程序只能在横向模式下工作(编辑:我的意思是,活动在清单中有android:screenOrientation="landscape"。所以,我在layout-land文件夹中有布局,默认的肖像文件夹中没有相同的命名资源。

有时候,当我将设备单独放置几分钟并将其唤醒时,我会被迫关闭,在setContentView方法中显示“找不到资源”。

我猜测在某些情况下,android会在注意到它只需要横向布局之前寻找一个肖像资源。在默认的纵向文件夹中是否必须具有布局资源?

编辑2:我不是问如何强制活动以纵向模式显示,我问是否相应的肖像资源是一个潜在的稳定性问题。

5 个答案:

答案 0 :(得分:2)

您可以在manifest.xml中设置默认的orietation

<activity android:name=".YourActivity" android:screenOrientation="landscape" "/>

您也可以按以下方式进行编程:

   setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

但默认情况下,/res/layout中的布局同时适用于人像风景

编辑:

此外,您应该在布局(dafault)和布局 - 土地文件夹中保留同名的资源(您将保留横向调整的布局)

答案 1 :(得分:1)

如果您知道仅使用横向模式,则不必将布局放在layout-land文件夹中。使用默认布局文件夹,并在清单文件中将方向设置为横向以用于所有活动。

    android:screenOrientation="landscape"

答案 2 :(得分:1)

嗨,请阅读

布局:所有关于一般布局

layout-port:这是关于必须为纵向方向更改的小部件布局

layout-land:所有关于小部件的alayout都必须针对横向进行更改

如果您处于横向/纵向模式,则无论如何。 Android首先分别在-portrait或-landscape目录中查找布局文件,如果找不到,那么它将返回到默认的布局目录中查看。

如果您知道仅使用横向模式,则无需在layout-land文件夹中放置布局。使用默认布局文件夹

你可以做的就是在你的情况下

您可以在androidmanifest.xml中设置默认方向

<activity android:name=".YoursActivity" android:screenOrientation="landscape" "/>

通过你可以写和去

<activity
        android:name=".YoursActivity"
        android:label="@string/app_name" 
        android:screenOrientation="landscapre" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

答案 3 :(得分:0)

如果您只想在活动中使用横向模式,则需要为AndroidManifest.xml文件中的每个活动添加android:screenOrientation="landscape"。例如:

<activity android:name="MainActivity" android:label="@string/app_name" android:screenOrientation="landscape">
    <intent-filter>
        <action android:name="android.intent.action.MAIN"/>
        <category android:name="android.intent.category.LAUNCHER"/>
    </intent-filter>
</activity>

之后无论您将布局存储在/layout-land文件夹或简单/layout文件夹

答案 4 :(得分:0)

仅将应用程序设置为横向。然后你不需要不同的布局文件夹,只需要一个。

在您的清单文件中

    <activity
        android:name=".ExampleActivity"
        android:label="@string/app_name" 
        android:screenOrientation="landscape" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

另见

How to set entire application in portrait mode only?