我使用片段但我的问题是: 当我改变方向时,如果我在scrollView中有2列,它们仍然在屏幕上,即使它是肖像,或者如果我在纵向模式下有一列,当我传递到横向时,我只有一列。
我有3个布局,同名,只有列数会改变, 我把它全部放在文件夹布局,layout-land和layout-port。
我需要的是,当我从肖像到风景时,我会从2列到1列,反之亦然。
答案 0 :(得分:2)
您不能只将它全部放在文件夹布局,布局 - 布局和布局 - 端口中以使其工作。您还需要执行3个步骤: 1.在values文件夹中创建layout.xml文件 2.在布局 - 布局中使用2列放置xml布局,在布局端口放置1列 3.在片段中的onCreateView()中,在layout.xml文件中扩展布局的名称,而不是当前布局。
有关详情,我会向您展示一些代码: 您将编写一个MainFragment并为其布局创建一个fragment_main.xml。你需要做的是:
在layout文件夹中写入fragment_main.xml(1列布局)
在layout文件夹中写入fragment_main_land.xml(2列布局)
使用代码行在values-land文件夹中创建layouts.xml文件
<resources>
<item name="layout_main" type="layout">@layout/fragment_main</item>
</resources>
使用代码行
在values-land文件夹中创建layouts.xml文件 <resources>
<item name="layout_main" type="layout">@layout/fragment_main_land</item>
</resources>
关于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
}