当我在活动运行时更改方向时,如何确保从右侧布局文件夹中选择正确的布局?

时间:2016-11-08 03:05:14

标签: android android-layout layout android-orientation

我的应用程序中有不同的屏幕方向布局。布局保存在layout-land和layout-port文件夹中。当我启动我的应用程序Android时,为第一个活动选择正确的方向(在我的情况下为Loadscreen),但是当我在启动第一个活动后更改手机的方向时,Android不会从其他方向文件夹更改为布局。如果在Activity运行时更改方向,如何确保选择正确的布局?是否有OnOrientationChanged方法或类似的东西?

<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.ncss.tyfby">

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity
        android:name=".Feeling"
        android:configChanges="keyboardHidden|orientation|screenSize">
    </activity>
    <receiver android:name=".SampleBootReceiver"
        android:enabled="true">
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED"></action>
        </intent-filter>
    </receiver>
    <activity
        android:name=".Profile"
        android:configChanges="keyboardHidden|orientation|screenSize">
    </activity>
    <activity
        android:name=".Victorios"
        android:configChanges="keyboardHidden|orientation|screenSize">
    </activity>
    <activity
        android:name=".Breath"
        android:configChanges="keyboardHidden|orientation|screenSize">
    </activity>
    <activity
        android:name=".HighFive"
        android:configChanges="keyboardHidden|orientation|screenSize"
        android:windowSoftInputMode="adjustResize">
    </activity>
    <activity
    android:name=".Settings"
    android:configChanges="keyboardHidden|orientation|screenSize">
    </activity>

    <activity
        android:name=".Loadscreen"
        android:configChanges="keyboardHidden|orientation|screenSize">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

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

</manifest>

1 个答案:

答案 0 :(得分:1)

删除此

android:configChanges="keyboardHidden|orientation|screenSize">

android的默认行为是创建一个新对象,并在方向改变但是这行代码时膨胀新的布局文件 在方向更改时阻止重新启动活动,因此将忽略layout-land中的布局。阅读https://developer.android.com/guide/topics/resources/runtime-changes.html