Activity需要不正确的替代资源

时间:2017-01-10 11:21:53

标签: android android-layout android-resources android-orientation

我想在平板电脑上允许横向和纵向,仅限手机上的肖像。 That question has already been asked,但我面临任何提议的解决方案的错误。

我有各种尺寸defined depending on the height of the device(h500dp,h400dp等)。因此,如果我有我的手机(宽度为411dp,肖像高度为731dp)旋转到横向,然后我启动应用程序,即使活动出现在肖像,它也有取h400dp尺寸;好像根据我当前的手机方向(风景)评估高度。如果我在启动应用程序之前将手机放在肖像上,则需要h500dp尺寸,这是正确的尺寸。

我使用的代码是来自this answer的代码;相关代码位于活动onCreate

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    if (!isTablet()) {
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    }
}

清单:

    <activity
        android:name=".login.LoginActivity"
        android:configChanges="keyboardHidden|orientation|screenSize"
        android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

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

2 个答案:

答案 0 :(得分:0)

<activity
            android:name=".MainActivity"
            android:label=""
            android:screenOrientation="portrait"
            android:theme="@style/AppTheme.NoActionBar">

请参阅 https://developer.android.com/training/basics/supporting-devices/screens.html

如果您想为横向提供特殊布局,包括在大屏幕上,那么您需要同时使用大型和土地限定符:

MyProject/
    res/
        layout/              # default (portrait)
            main.xml
        layout-land/         # landscape
            main.xml
        layout-large/        # large (portrait)
            main.xml
        layout-large-land/   # large landscape
            main.xml

/

使用屏幕尺寸确定设备类型。你可以参考this post

在第二步,您可以使用setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);更改屏幕方向。还有另一篇帖子here

答案 1 :(得分:0)

请从AndroidManifest.xml

Activity删除配置更改

设置android:configChanges="keyboardHidden|orientation|screenSize"

将限制布局在Orientation更改时更新。