PagerTabStrip没有显示

时间:2016-07-14 11:59:57

标签: android android-fragments

我正在制作滑动标签视图。我想在SupportActionBar的底部显示PagerTabStrip。所有选项卡内容都显示良好,但问题是这些选项卡的标题没有显示,PagerTabStrip也没有显示在SupportActionBar的底部。

main_tab.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent" android:layout_height="match_parent"
    android:orientation="horizontal">


    <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="fill_parent"
    android:layout_height="fill_parent"
    tools:context=".MainActivity" >

        <android.support.v4.view.PagerTabStrip
            android:layout_width="wrap_content"
            android:layout_height="100dp"
            android:background="#e62117"
            android:id="@+id/tab_strip"
            android:focusableInTouchMode="false">
        </android.support.v4.view.PagerTabStrip>

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

tab1,tab2,tab3:类似

  public class tab1 extends Fragment {

    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.tab1,container,false);
return view;
    }
}

ma_page_adapter:

public class ma_pager_adapter extends FragmentPagerAdapter {
    public ma_pager_adapter(FragmentManager fm) {
        super(fm);
    }


    @Override
    public Fragment getItem(int i) {

        switch (i) {
            case 0:
                tab1 t1 = new tab1();
                return t1;
            case 1:
                tab2 t2 = new tab2();
                return t2;
            case 2:
                tab3 t3 = new tab3();
                return t3;

        }
        return null;
    }

    @Override
    public int getCount() {
        return 3;
    }//set the number of tabs

    @Override
    public CharSequence getPageTitle(int position) {
        Locale l = Locale.getDefault();
        switch (position) {
            case 0:
                return "Top stories";
            case 1:

                return "Members";
            case 2:

                return "Setting";
        }
        return null;
    }
}

MainActivity:

   ViewPager pager;
    PagerTabStrip tab_strp;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_tab);
        ma_pager_adapter mapager = new ma_pager_adapter(getSupportFragmentManager());


        pager = (ViewPager)findViewById(R.id.pager);
        pager.setAdapter(mapager);
//        tab_strp = (PagerTabStrip) findViewById(R.id.tab_strip);
        ((ViewPager.LayoutParams) findViewById(R.id.tab_strip).getLayoutParams()).isDecor = true;
//        tab_strp.setTextColor(Color.WHITE);
    }
}

3 个答案:

答案 0 :(得分:2)

您的问题重复了以下问题:

PagerTabStrip not showing in ViewPager in app targeting Android 6.X (N)

对于定位Android N的应用,您需要使用以下解决方法:

在onCreateView()中,添加以下内容:

((ViewPager.LayoutParams)(view.findViewById(R.id.tab_strip))。getLayoutParams())。isDecor = true;

答案 1 :(得分:2)

我已经运行了你的代码,它运行正常。如果你想在你的ViewPager的底部显示它,你可以使用&#34; android:layout_gravity&#34;并将其设置为底部。

答案 2 :(得分:0)

tab1.onCreateView(...)方法中删除此行...

((ViewPager.LayoutParams) (view.findViewById(R.id.tab_strip)).getLayoutParams()).isDecor = true;

...并将其添加到您的MainActivity.onCreate(...)方法中。您的应用将停止崩溃。

您的tab1 Fragment类不了解R.id.tab_strip视图。这是MainActivity类的视图。