我只想在旋转设备时更改布局。但我发现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概念是保持布局我认为
答案 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"
行。