【问题标题】:ViewPager doesn't show FragmentViewPager 不显示片段
【发布时间】:2016-03-02 13:55:27
【问题描述】:

我正在尝试使用 Pager Sliding Tab Strip (com.astuetz:pagerslidingtabstrip) 来实现 Slinding Menu。 我设置了主屏幕的 xml 布局:

<LinearLayout
    android:orientation="vertical"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_weight=".97">


    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/logo_b"
        android:src="@drawable/logo_b"
        android:layout_weight=".05"
        android:layout_gravity="right"
        android:layout_marginRight="-15dp" />

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/scrollMe"
        android:layout_weight=".95"
        android:fillViewport="false">

        <LinearLayout
            android:orientation="vertical"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal">

            <com.astuetz.PagerSlidingTabStrip
                android:id="@+id/tabs"
                android:layout_width="match_parent"
                android:layout_height="48dip"
                app:pstsIndicatorColor="#19B5FE"
                app:pstsShouldExpand="true"
                app:pstsTextAllCaps="false"
                app:pstsIndicatorHeight="1dp"
                />


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

        </LinearLayout>
    </ScrollView>
</LinearLayout>

此 xml 包含在另一个视图中,但它处理视图分页器。
为了处理 ViewPager 和 PagerSlidingTapStrip 的初始化,我有一个 FragmentActivity,在 onCreate 期间我有:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_sliding_menu);

    pager = (ViewPager) findViewById(R.id.pager);
    CustomPagerAdapteradapter = new  CustomPagerAdapter(getSupportFragmentManager());
    adapter.setContext(getApplicationContext());
    pager.setAdapter(adapter);

    tabs = (PagerSlidingTabStrip) findViewById(R.id.tabs);
    tabs.setViewPager(pager);
}

而适配器是:

public static class CustomPagerAdapteradapter extends FragmentPagerAdapter implements IconTabProvider {
    private int[] ICONS = {
            R.drawable.icon_menu0,
            R.drawable.icon_menu1,
            R.drawable.icon_menu2,
            R.drawable.icon_menu3,
            R.drawable.icon_menu4
    };
    private static Context CONTEXT;
    private Fragment fragment[] = new Fragment[5];

    public CustomPagerAdapteradapter (FragmentManager fm) {
        super(fm);
        for(int i = 0; i < 5; ++i) {
            fragment[i] = Profile.newInstance();
        }
    }

    public void setContext(Context c) { CONTEXT = c; }

    @Override
    public int getCount() {
        return ICONS.length;
    }

    @Override
    public Fragment getItem(int position) {
        Toast.makeText(CONTEXT, "" + position, Toast.LENGTH_SHORT).show();
        switch (position) {
            case 0:
                return fragment[position];
            case 1:
                return fragment[position];
            case 2:
                return fragment[position];
            case 3:
                return fragment[position];
            case 4:
                return fragment[position];
            case 5:
                return fragment[position];
            default:
                return fragment[position];
        }
    }

    @Override
    public int getPageIconResId(int position) {
        return ICONS[position];
    }
}

配置文件片段 xml 是:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">


<LinearLayout
    android:orientation="vertical"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_weight=".90">


    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_weight=".20">

        <!-- Not filled yet -->

    </RelativeLayout>

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight=".70"
        android:background="@drawable/radius_background"
        android:layout_margin="15dp">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="15dp"
            android:layout_marginTop="15dp"
            android:textColor="#FFF"
            android:textSize="16dp"
            android:text="info@example.com"
            android:id="@+id/user_mail" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="15dp"
            android:layout_marginTop="5dp"
            android:textColor="#FFF"
            android:textSize="16dp"
            android:text="15/10/54"
            android:id="@+id/user_birth" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="15dp"
            android:layout_marginTop="5dp"
            android:textColor="#FFF"
            android:textSize="16dp"
            android:text="Italy"
            android:id="@+id/user_country" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="15dp"
            android:layout_marginTop="5dp"
            android:textColor="#FFF"
            android:textSize="16dp"
            android:text="Pa"
            android:id="@+id/user_town_short" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="15dp"
            android:layout_marginTop="5dp"
            android:textColor="#FFF"
            android:textSize="16dp"
            android:text="Palermo"
            android:id="@+id/user_town" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="15dp"
            android:layout_marginTop="5dp"
            android:textColor="#FFF"
            android:textSize="16dp"
            android:text="Male"
            android:id="@+id/user_sex" />

    </LinearLayout>

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_weight=".05">
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingLeft="5dp"
            android:paddingRight="5dp"
            android:textColor="#FFF"
            android:background="#18333E"
            android:text="Edit/Update Data"
            android:id="@+id/updateData"
            android:layout_alignParentTop="true"
            android:layout_centerHorizontal="true" />
    </RelativeLayout>

   </LinearLayout>
</LinearLayout>

配置文件片段 onCreateView 只是膨胀 xml:

return inflater.inflate(R.layout.fragment_profile, container, false);

即使代码看起来没问题,我也从来没有在 View Pager 上看到个人资料。
怎么了?

【问题讨论】:

  • 起初:使用 ScrollView 来提升 ViewPager 绝不是一个好主意。尝试将包装 LinearLayouts 的高度设置为 match_parent,因为这会使视图可见。如果不是,您会这么好心并发布您的应用程序的屏幕截图吗?
  • ScrollView 是问题所在。非常感谢!

标签: java android xml android-fragments android-viewpager


【解决方案1】:

最终答案:移除被 ViewPager 阻塞的 ScrollView。

【讨论】:

    猜你喜欢
    • 2015-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多