我有一个包含两个片段的活动,如下图所示: 状态 A 片段 B 是一个 ListFragment。当用户单击片段 B 中的一行时。我已显示详细信息。UI 应该是这样的: 状态 B
如何移动和调整片段 B 的大小?
我尝试过这种方式,但不知道这是正确的方式还是hacky方式。我为活动设置了这个布局。
<LinearLayout
android:id="@+id/linearLayoutMainPart"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@+id/scrollViewBottomMenu"
android:layout_toRightOf="@+id/scrollViewLeftMenu"
android:background="@android:color/white"
android:orientation="horizontal" >
<FrameLayout
android:id="@+id/leftContainer"
android:layout_width="wrap_content"
android:layout_height="match_parent" >
</FrameLayout>
<FrameLayout
android:id="@+id/rightContainer"
android:layout_width="0dip"
android:layout_height="match_parent">
</FrameLayout>
</LinearLayout>
我创建了 3 个片段 A、B、C 类。创建活动时,我将两个片段 A、B 添加到 leftContainer 和 rightContainer。(片段A的布局宽度是固定的)。当用户单击片段 B 中的一行时。我将片段 A 替换为片段 B 的另一个实例(具有不同的布局,并使用与旧片段 B 实例相同的数据)。并用片段 C 的实例替换 rightContainer 中的片段 B。
在片段 B 类中。调用 onCreateView 方法时,我有选择布局的标志,例如:
if(rightPosition)
return B_right_pos_layout;
else
return B_left_pos_layout;
我想我可以使用 Fragment B 的相同实例。通过这样做:
FragmentB fragmentB = (FragmentB) getSupportFragmentManager().findFragmentByTag(FRAGMENT_B_TAG);
fragmentB.setRightPos(false);
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(rightContainer, fragmentC);
transaction.replace(leftContainer, fragmentB);
transaction.commit();
我认为这种方式更像是一种黑客方式。什么是最好的方法?