【问题标题】:Change fragment layout portrait to landscape将片段布局纵向更改为横向
【发布时间】:2016-02-08 10:21:30
【问题描述】:

我使用片段,但我的问题是: 当我改变方向时,如果我的滚动视图中有 2 列,即使它是纵向的,它们仍然在屏幕中,或者如果我在横向模式下有一列处于纵向模式,我只有一列。

我有 3 个同名布局,只有列数会发生变化, 我把它全部放在文件夹布局、布局地和布局端口中。

我需要的是,当我从纵向切换到横向时,我会从 2 列切换到 1 列,反之亦然。

【问题讨论】:

  • layout文件夹中删除一个布局,因为你只需要layout-landlayout-port

标签: java android android-layout android-fragments


【解决方案1】:

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

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

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

  2. 在布局文件夹中写入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);

【讨论】:

  • 感谢您的回复,但您能解释一下第 3 点吗?如果你有更多的代码 java 或 xml 会很好
  • 我编辑了我的答案以便清楚地解释。请看@Euphor08
  • 谢谢,所以我现在不需要使用 onConfigurationChanged 了吗?我用你给我的对吗?
  • 是的,当然,您不再需要触摸 onConfigurationChanged。只要做上面的事情,android就会为我们关心一切^_^
  • 对不起我的朋友,但是当我改变方向时它不起作用我的片段被破坏,我添加了这个 android:configChanges="orientation|screenSize" 但布局列没有改变:/ 如果你有一个可行的例子,你可以通过 ettaheri.nizar@gmail.com 发送给我
【解决方案2】:
 @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
}

【讨论】:

  • 如果有相同的布局名称,它会起作用吗?抱歉这个愚蠢的问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-02-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多