仅使用一个XML进行水平和垂直布局?

问题描述 投票:-1回答:1

我已经在MainActivity中为我的应用制作了2个布局(不是XML),这是2个不同的项目,但是我不知道如何将它们组合在一起。我们不应该使用2种不同的XML布局来定向,而应该使用if if else语句来确定填充。这是我的布局:

GridLayout grid = new GridLayout(this);
grid.setColumnCount(3);
grid.setRowCount(4); //4th row is for results box

我想在设备处于横向状态时实施此操作:

grid.setOrientation(GridLayout.HORIZONTAL);
grid.setPadding(750,20,0,0); //moves to middle

任何建议?

android android-layout grid-layout
1个回答
0
投票

首先将此添加到AndroidManifest.xml上的活动标签中:

android:configChanges="orientation"

它告诉android,您将在此活动上处理方向更改。现在,当更改设备方向时,将在您的活动或片段上调用回调方法onConfigurationChanged。您必须覆盖它并检查显示的方向,然后根据方向进行所需的更改。

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

    // Checks the orientation of the screen
    if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
        Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show();
    } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
        Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show();
    }
}

查看官方文档here

无论如何,考虑到良好的习惯和更好的职责分离,您可能希望将布局分离为单独的XML。

© www.soinside.com 2019 - 2024. All rights reserved.