模拟器不使用横向变体

时间:2017-11-22 21:57:12

标签: java android emulation landscape

所以我有一个非常简单的项目,只有几张图片。我创建了一个风景变化,并改变了图像的位置。

问题是,在模拟器或设备上运行项目时,将使用默认的横向布局而不是变体。

如果它在模拟器处于横向位置时运行,那么它确实使用了变体,但会弄乱画像。

我改变的唯一另一件事是styles.xml:

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">

作为应用主题。

我是Android Dev的新手。所以这可能是相当简单的事情。

非常感谢任何帮助。

清单:

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

<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme" >
<activity
    android:name=".MainActivity"
    android:configChanges="orientation|screenSize|keyboardHidden" >
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

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

</manifest>

应该是什么样的:

https://i.stack.imgur.com/UXQCd.png

它不应该是什么样的:

https://i.stack.imgur.com/dS54W.png

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。

这涉及保持一线:

android:configChanges="orientation|screenSize|keyboardHidde‌​n" >

在MainActivity.java中只需添加一个onConfigurationChanged函数,如下所示:

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);

    // Checks the orientation of the screen
    if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
        //retrieving resources for the variations
        setContentView(R.layout.activity_main);

    } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
        //retrieving resources for the variations
        setContentView(R.layout.activity_main);

    }
}

这是我能提出的最好的解决方案。可能有更好的方法,因为这看起来有点多余。