1

我只想在设备旋转后更改布局。但我发现 onConfigurationChanged() 必须使用 setContentView 再次调用 onCreate() 并使用名为 *_land.xml 的单独布局

if(getActivity().getWindowManager().getDefaultDisplay().
getRotation() == Surface.ROTATION_0)
view = inflater.inflate(R.layout.fragment_layout, null);
else view = inflater.inflate(R.layout.fragment_layout_land, null);

项目太大,有很多代码要修复如果再次 onCreate 没有完成()。

我希望有人帮忙。

谢谢你。

-> onConfigurationChanged 概念是保持布局我认为

4

4 回答 4

4

这不是没有兴趣

onConfigurationChanged() 不能与 layout-land 文件夹的机制一起使用。那是因为回调的概念是保持布局。所以使用该方法的Activity应该Inflate Landscape Layout。

于 2012-09-03T14:46:10.917 回答
3

只需在方法 setContentView(R.layout.activity_main); 结束时调用

public void onConfigurationChanged(Configuration newConfig) {
    setContentView(R.layout.activity_main);
}

所以你可以像往常一样使用文件夹方法

于 2014-05-04T09:37:09.947 回答
0

您不需要自己调用横向布局,如果您遵循 android 文件夹结构,它将自动调用。像:

假设您的布局名称是“main.xml”,那么

在 layout 文件夹中保留一个 main.xml 文件,在 layout-land 文件夹中保留一个。所以在landscape模式的情况下,系统会自动从layout-land文件夹中选择layout。

如果您有任何疑问,请查看此链接。

于 2012-08-31T05:54:06.287 回答
0

您只需在 res 文件夹中的 layout-land 文件夹(默认情况下由您创建)中创建一个 main.xml,其名称与您在 layout 文件夹中的 main.xml 名称相同。但是在线性布局标记中进行更改,即使其水平而不是位于 layout-land 文件夹中的 main.xml 的垂直。

毕竟,您只需调用SetContentView(R.layout.main);. 看看神奇,你的应用程序会工作。还要在 Android Manifest 文件中进行更改,即在您的活动标记中进行注释android:screenOrientation="portrait"行。

于 2012-08-31T06:06:00.237 回答