如何移动和更改片段视图大小

时间:2012-09-09 11:11:32

标签: android android-layout

我有一个活动有两个片段,如下图: 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();

我认为这种方式更像是一种破解方式。什么是最好的方式?

0 个答案:

没有答案