代码之家  ›  专栏  ›  技术社区  ›  Pascal Klein

android:活动内的屏幕旋转不切换纵向/横向布局

  •  4
  • Pascal Klein  · 技术社区  · 16 年前

    我构建了我的android应用程序,希望现在为不同的方向添加布局。我创建了一个layout land文件夹,并为我的第一个starter活动“mystartactivity”(与我之前为两个方向使用的布局同名)放置了不同的布局。

    根据我在启动应用程序之前的屏幕方向,在纵向启动时,会从“layout”文件夹中选择“mylayout.xml”,在横向启动时,会从“layout land”文件夹中选择“mylayout.xml”。

    问题是,当我在活动中旋转设备时,旋转后我就无法得到新的布局。例如:从纵向旋转到横向它仍然显示“layout”文件夹中的“mylayout.xml”,而不是它应该显示的“layout land”文件夹。

    我没有覆盖任何onconfigurationchange方法或任何内容。我在“myStartActivity”中所做的就是实例化一些按钮并给它们一些监听器。我想用不同的布局来改变按钮的顺序。

    3 回复  |  直到 16 年前
        1
  •  3
  •   User    14 年前

    在我的例子中,所描述的问题只有在我有android:configchanges=“orientation”时才会发生 在清单中的活动中。

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

        2
  •  0
  •   tutts    15 年前

    你能做的就是利用 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
  •  0
  •   kaspermoerch    14 年前

    如果只在模拟器上测试,则检测方向更改时可能会出现问题。我至少经历过。

    推荐文章