在何处检查android片段中的方向更改
在我的应用程序中,我有一个在何处检查android片段中的方向更改,android,android-fragments,Android,Android Fragments,在我的应用程序中,我有一个片段活动,其中有多个片段都处于纵向模式,只有一个特定的片段。我通过FragmentActivity中的footerViews在fragments之间移动 当方向发生变化时,我对这个特定的片段有不同的布局(实际上有相同的名称但不同的小部件Views)。在横向模式下,我想从片段活动的布局视图和页脚视图中删除特定的小部件,回到纵向模式时,将所有内容都添加回去 我已将所需的所有数据保存在片段中的onSavedInstanceState()中,但我应该在哪里测试方向更改,以便可以
片段活动
,其中有多个片段
都处于纵向模式,只有一个特定的片段
。我通过FragmentActivity
中的footerView
s在fragments
之间移动
当方向发生变化时,我对这个特定的片段有不同的布局(实际上有相同的名称但不同的小部件View
s)。在横向模式下,我想从片段活动的布局视图和页脚视图中删除特定的小部件,回到纵向模式时,将所有内容都添加回去
我已将所需的所有数据保存在片段中的onSavedInstanceState()
中,但我应该在哪里测试方向更改,以便可以适当地恢复视图
我不确定是否可以覆盖onConfigurationChange()
并在我的片段中进行测试,因为我的android清单中没有android:configChanges=“orientation” 在onCreate()中保留此签入。旋转设备时,应用程序将重新启动。因此,当应用程序重新启动时,再次调用onCreate
int currentOrientation = getResources().getConfiguration().orientation;
if (currentOrientation == Configuration.ORIENTATION_LANDSCAPE) {
// Landscape
}
else {
// Portrait
}
您还可以通过覆盖片段的onConfigurationChanged
函数来控制方向更改
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
int currentOrientation = getResources().getConfiguration().orientation;
if (currentOrientation == Configuration.ORIENTATION_LANDSCAPE){
Log.v("TAG","Landscape !!!");
}
else {
Log.v("TAG","Portrait !!!");
}
}
您可以为纵向视图和横向视图创建单独的XML。在“res”文件夹中创建一个名为“layoutland”的文件夹,并在该文件夹中为风景视图创建一个xml。保持两个XML(纵向和横向)的名称相同。您的视图将自动调整。确保每个xml中的所有小部件都完好无损(只需将两个视图中不需要的小部件的可见性更改为“已消失”)。非常感谢。但实际上,我刚从我的评论中意识到,我的意思是你的回答给了我其他的想法。。我不是真的想问这个问题,但很高兴它发生了,因为我忘记了使用视图可见性选项。:)我的荣幸:)很高兴它帮助了你。成功了!11111111111111111