我正在开发一个使用片段的 Android 应用程序,它更像是主/详细信息形式。我希望主要活动由左侧的列表片段组成,根据左侧选择的项目,我想在右侧显示具有不同布局的片段。
(注意:右侧的每个片段需要不同的布局/视图)
我遇到的所有示例都仅使用右侧的一个常见片段,方法是更改其中的某些值或交换/替换具有相同布局的新片段。
如果有人能够阐明这个问题,那么它将对我有很大帮助。谢谢!
如果您使用框架布局来保存片段,则它与您提到的其他布局相同。您只需实例化您的片段(无论布局如何)并将其交换到框架布局中代替另一个片段。
如果您已将片段硬编码到 XML 中,则您将无法执行此操作(据我所知)。
main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/frames"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@id/hline1"
android:layout_below="@id/horizontalline"
android:orientation="horizontal" >
<FrameLayout
android:id="@+id/leftpane"
android:layout_width="0px"
android:layout_height="match_parent"
android:layout_weight=".4" />
<TextView
android:id="@+id/verticalline"
android:layout_width="2dp"
android:layout_height="match_parent"
android:background="@color/bar_background"
android:gravity="center_horizontal"
android:paddingLeft="5dip"
android:paddingRight="5dip" />
<FrameLayout
android:id="@+id/rightpane"
android:layout_width="0px"
android:layout_height="match_parent"
android:layout_weight="1" >
</FrameLayout>
</LinearLayout>
然后,您使用框架布局的 id 和实例化片段的名称将片段放入框架布局中。
EventListFragment eventlist = new EventListFragment();
getFragmentManager().beginTransaction().replace(R.id.leftpane, eventlist).commit();
EventDetailFragment eventadd = new EventDetailFragment();
getFragmentManager().beginTransaction().replace(R.id.rightpane, eventadd).commit();
当您想要更改内容时,您可以再次执行相同的操作(以下操作将用新的/不同的片段替换右窗格中的片段,该片段可以具有与之关联的自己的不同布局):
EventSuperDetailFragment eventsuper = new EventSuperDetailFragment();
getFragmentManager().beginTransaction().replace(R.id.rightpane, eventsuper).commit();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)