将片段布局纵向更改为横向

时间:2016-02-08 10:21:31

标签: java android android-layout android-fragments

我使用片段但我的问题是: 当我改变方向时,如果我在scrollView中有2列,它们仍然在屏幕上,即使它是肖像,或者如果我在纵向模式下有一列,当我传递到横向时,我只有一列。

我有3个布局,同名,只有列数会改变, 我把它全部放在文件夹布局,layout-land和layout-port。

我需要的是,当我从肖像到风景时,我会从2列到1列,反之亦然。

enter image description here

enter image description here

enter image description here

2 个答案:

答案 0 :(得分:2)

您不能只将它全部放在文件夹布局,布局 - 布局和布局 - 端口中以使其工作。您还需要执行3个步骤: 1.在values文件夹中创建layout.xml文件 2.在布局 - 布局中使用2列放置xml布局,在布局端口放置1列 3.在片段中的onCreateView()中,在layout.xml文件中扩展布局的名称,而不是当前布局。

有关详情,我会向您展示一些代码: 您将编写一个MainFragment并为其布局创建一个fragment_main.xml。你需要做的是:

  1. 在layout文件夹中写入fragment_main.xml(1列布局)

  2. 在layout文件夹中写入fragment_main_land.xml(2列布局)

  3. 使用代码行在values-land文件夹中创建layouts.xml文件 <resources> <item name="layout_main" type="layout">@layout/fragment_main</item> </resources>

  4. 使用代码行

    在values-land文件夹中创建layouts.xml文件

    <resources> <item name="layout_main" type="layout">@layout/fragment_main_land</item> </resources>

  5. 关于MainFragment的onCreateView方法,inflater.inflate(R.layout.layout_main,null);

答案 1 :(得分:1)

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

// Checks the orientation of the screen
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
    //change your desigen by java code
} else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
     //change your desigen by java code
}