同时使用layout-land和onConfigurationChanged()

时间:2012-08-31 05:49:00

标签: android rotation onconfigurationchanged

我只想在旋转设备时更改布局。但我发现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 个答案:

答案 0 :(得分:3)

这不是更多的内容

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

答案 1 :(得分:3)

只需在方法setContentView(R.layout.activity_main)的末尾调用;

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

所以你可以正常使用文件夹方法

答案 2 :(得分:0)

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

假设您的布局名称是“main.xml”,然后是

将一个main.xml文件保存在layout文件夹中,将一个保存在layout-land文件夹中。所以在陆地景观模式的情况下,系统会自动从layout-land文件夹中选择布局。

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

答案 3 :(得分:0)

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

完成所有这些后,您只需致电SetContentView(R.layout.main);即可。看到神奇,你的应用程序将起作用。同时在Android Manifest文件中进行更改,即在您的actvity标记中进行注释android:screenOrientation="portrait"行。