如何将Fragment放在ViewPager上

时间:2012-12-11 15:04:27

标签: android android-layout

我正在使用android.support.v4.view.ViewPager进行导航,

我要做的是在ViewPager

上打开另一个片段(如新屏幕)

在我的活动中我做了:

FragmentTransaction trans = getSupportFragmentManager().beginTransaction();
trans.add(R.id.main_layout, frag);
trans.addToBackStack(null);
trans.commit();

但我想我的问题是ViewPager不是FragmentR.id.main_layout

这是activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/main_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >

<android.support.v4.view.ViewPager
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/pager"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_alignParentRight="true"
    tools:context=".MainActivity" >

    <!--
        This title strip will display the currently visible page title, as well as the page
        titles for adjacent pages.
    -->

    <android.support.v4.view.PagerTitleStrip
        android:id="@+id/pager_title_strip"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="top"
        android:background="#33b5e5"
        android:paddingBottom="4dp"
        android:paddingTop="4dp"
        android:textColor="#fff" />

</android.support.v4.view.ViewPager>
</RelativeLayout>

我也试过trans.add(R.id.pager, frag),但它也不起作用。

另一个片段会打开,但ViewPager仍低于接收输入。

编辑这里有更多信息:

我的主要活动是滑动视图+标题条。在其中一个视图中,我显示了一个网格,当用户点击该网格的元素时,我想显示一个新的“视图”(可能不是正确的术语)。

例如,我在网格中显示相册,当用户点击相册时,我会在相册上显示相片。

我认为这就像开始一项新活动,但我正在使用FragmentActivity,当我尝试展示新Fragment时,我无法替换FragmentActivity

1 个答案:

答案 0 :(得分:1)

  1. 请改用DialogFragment。
  2. 不要使用父RelativeLayout作为Fragment容器,在ViewPager上面写一个空的RelativeLayout。
  3. 如果上述方法不起作用,请在显示新片段时隐藏ViewPager。
  4. 编辑:布局样本

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
    
        <android.support.v4.view.ViewPager
            android:id="@+id/pager"
            android:layout_width="match_parent"
            android:layout_height="match_parent" >
        </android.support.v4.view.ViewPager>
    
        <FrameLayout
            android:id="@+id/fragment_container"
            android:layout_width="match_parent"
            android:layout_height="match_parent" >
        </FrameLayout>
    
    </RelativeLayout>