我制作了两个布局文件 - 一个用于纵向,一个用于横向。这里是肖像:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal" >
<fragment
android:id="@+id/fragment_newslist"
android:name="com.app.NewsListFragment"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1" >
</fragment>
</LinearLayout>
这里是景观:
<fragment
android:id="@+id/fragment_newslist"
android:name="com.app.NewsListFragment"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1" >
</fragment>
<fragment
android:id="@+id/fragment_viewnews"
android:name="com.app.ViewNewsFragment"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="2" >
</fragment>
然后我创建了一个Activity,它在onCreate()方法中加载布局。到目前为止,这当然很好。此活动不包含更多代码。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_news);
}
在NewsListFragment类中,我正在检查ViewNewsFragment是否可用。如果没有,用户点击了ListItem,将启动一个新的Activity(即ViewNewsActiviy)。如果可用,数据将显示在现有片段中。所以有两个类:1。ViewNewsActivity和2. ViewNewsFragment
但我真正想要的是改变方向变化的布局。当设备从纵向转为横向时,我想要具有典型的双窗格布局,如果它从横向转为纵向,我想单独显示列表,细节应该被视为单独的“视图”。
但是怎么做?到目前为止,当您以横向或纵向启动应用程序时,它可以正常工作。但是当您更改方向时,布局仍保持初始设置。
我非常感谢任何帮助:)! 非常感谢你!
延
答案 0 :(得分:1)
但是怎么做?到目前为止,当您以横向或纵向启动应用程序时,它可以正常工作。但是当您更改方向时,布局仍保持初始设置。
Android会在方向更改时自动销毁并重新创建您的活动,因此每次调用onCreate()
都会获得正确的布局。
如果您没有这样做,那么您可以采取措施阻止它,例如向清单中的android:configChanges
添加<activity>
属性。