【问题标题】:Android: Screen Rotation within Activity doesnt switch portrait/landscape layoutAndroid:活动中的屏幕旋转不会切换纵向/横向布局
【发布时间】:2010-07-23 10:51:32
【问题描述】:

我构建了我的 Android 应用程序,现在想为不同的方向添加布局。我创建了一个 layout-land 文件夹,并在其中为我的第一个 Starter Activity“myStartActivity”(与我之前用于两个方向的布局同名)放置了一个不同的布局。

在我启动应用程序之前,根据我的屏幕方向选择正确的布局:当我以纵向开始时,从“layout”文件夹中选择“myLayout.xml”,从“layout-”中选择“myLayout.xml”土地”-当我从横向开始时的文件夹。

问题是,当我在 Activity 中旋转设备时,旋转后我没有得到新的布局。例如:从纵向旋转到横向时,它仍然会在“layout”文件夹中显示“myLayout.xml”,而不是应该在“layout-land”文件夹中显示。

我没有覆盖任何 OnConfigurationChange 方法或任何东西。我在“myStartActivity”中所做的只是实例化一些按钮并给它们一些监听器。我想在横向中使用不同的布局来更改按钮的顺序。

【问题讨论】:

    标签: android landscape screen-orientation portrait device-orientation


    【解决方案1】:

    在我的情况下,仅当我有 android:configChanges="orientation" 时才会发生所描述的问题 在清单中的活动中。

    否则旋转时会自动使用正确的布局。

    【讨论】:

    • 好吧,但是如果您从清单中删除 android:configChanges="orientation",您将在旋转屏幕时重新创建整个活动/片段,这可能不是有意的。
    【解决方案2】:

    你可以做的是使用Activity.getResources().getConfiguration().orientation

    然后根据方向结果,在 oncreate() 方法中设置内容视图,该方法在旋转时调用。

    protected void onCreate(Bundle savedInstanceState) {
    int result = this.getResources().getConfiguration().orientation;
    if (result == 1){
    //set content view to portrait
    setContentView(R.layout.portrait);
    }
    else{
    //set content view to landscape} 
    setContentView(R.layout.landscape);
    }
    

    或者坚持一个案例陈述:)

    【讨论】:

      【解决方案3】:

      如果您仅在模拟器上进行测试,则检测方向变化可能会出现问题。至少我经历过。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-07-23
        • 1970-01-01
        • 1970-01-01
        • 2017-10-14
        • 1970-01-01
        • 2014-12-10
        • 2022-07-07
        相关资源
        最近更新 更多