我有一个活动有两个片段,如下图: status A 片段B是ListFragment。当用户点击片段B中的一行时,我会显示详细信息。用户界面应该是这样的: status B
如何移动和调整片段B的大小?
我试过这种方式,但不知道这是正确的方式还是黑客的方式。 我为活动设置了这个布局。
<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();
我认为这种方式更像是一种破解方式。什么是最好的方式?