TabLayout+Viewpager+fragment实现页面切换

先上布局文件

<LinearLayout
    android:id="@+id/tab_viewpager"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <android.support.design.widget.TabLayout
        android:id="@+id/orderlist_title"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#fff"
        android:paddingLeft="1dp"
        android:paddingRight="1dp"
        app:tabIndicatorColor="@color/font_color_1"
        app:tabMode="scrollable"
        app:tabPadding="0dp"
        app:tabSelectedTextColor="@color/font_color_1"
        app:tabTextAppearance="@android:style/TextAppearance.Holo.Large"
        />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:background="#e5e5e5"/>

    <android.support.v4.view.ViewPager
        android:id="@+id/viewpager_orderlist"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/orderlist_title"/>
</LinearLayout>

接下来是将TabLayout+Fragment+ViewPager关联起来

在oncreat方法中

pagerchange();
//添加三个fragment的适配器
MyPagerAdapter adapter = new MyPagerAdapter(getSupportFragmentManager(), mTitle, mFragment);

mViewPager.setAdapter(adapter);

//TabLayout设置ViewPager
tabs.setupWithViewPager(mViewPager);
//使用ViewPager的适配器
tabs.setTabsFromPagerAdapter(adapter);

接下来是PagerAdapter

//ViewPager适配器
class MyPagerAdapter extends FragmentPagerAdapter {
    private List<String> title;
    private List<Fragment> views;

    public MyPagerAdapter(FragmentManager fm, List<String> title, List<Fragment> views) {
        super(fm);
        this.title = title;
        this.views = views;
    }

    @Override
    public Fragment getItem(int position) {
        return views.get(position);
    }

    @Override
    public int getCount() {
        return views.size();
    }


    //配置标题的方法
    @Override
    public CharSequence getPageTitle(int position) {
        return title.get(position);
    }

}

下面是页面以及视图切换的

//这里是页面切换
private void pagerchange() {
    tabs = (TabLayout) findViewById(R.id.orderlist_title);
    mViewPager = (ViewPager) findViewById(R.id.viewpager_orderlist);
    mTitle.add(getString(R.string.all));
    mTitle.add(getString(R.string.vip));
    mTitle.add(getString(R.string.cash));
    tabs.setTabGravity(TabLayout.GRAVITY_FILL);//这个地方需要注意
    tabs.setTabMode(TabLayout.MODE_FIXED);//两个属性需要一起设置才能保证TabLayout能够布满整个屏幕
    mAllFragment = new AllFragment();
    mVipFragment = new VipFragment();
    mCashFragment = new CashFragment();
    //        Bundle bundle = new Bundle();
    //        bundle.putString("all", mSearchKey);
    //        Log.e("bundle对象", "sjdhfjsdhgj+看来是的路口发生了的环境" + mSearchKey + "--------");
    //        allFragment.setArguments(bundle);

    mFragment.add(mAllFragment);
    mFragment.add(mVipFragment);
    mFragment.add(mCashFragment);

}

整个所有的布局都可以写在Activity中,然后才是切换的三个Fragment布局,这个简单就不说了

 

 

转载于:https://my.oschina.net/fxflysky/blog/742821

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现 ViewPager2+TabLayout+Fragment 实现页面切换,需要以下步骤: 1. 在 XML 布局文件中定义 ViewPager2 和 TabLayout,并将它们嵌套在一个父布局中。 ```xml <androidx.constraintlayout.widget.ConstraintLayout android:layout_width="match_parent" android:layout_height="match_parent"> <com.google.android.material.tabs.TabLayout android:id="@+id/tab_layout" android:layout_width="match_parent" android:layout_height="wrap_content" app:tabMode="scrollable" app:tabGravity="center"/> <androidx.viewpager2.widget.ViewPager2 android:id="@+id/view_pager" android:layout_width="match_parent" android:layout_height="0dp" app:layout_constraintTop_toBottomOf="@id/tab_layout" app:layout_constraintBottom_toBottomOf="parent"/> </androidx.constraintlayout.widget.ConstraintLayout> ``` 2. 创建 Fragment,并实现 ViewPager2 的适配器。 ```kotlin class MyFragmentAdapter(fragmentActivity: FragmentActivity) : FragmentStateAdapter(fragmentActivity) { private val fragmentList = listOf( FirstFragment(), SecondFragment(), ThirdFragment() ) override fun getItemCount() = fragmentList.size override fun createFragment(position: Int) = fragmentList[position] } ``` 3. 在 Activity 或 Fragment 中,初始化 ViewPager2 和 TabLayout,并将适配器设置给 ViewPager2。 ```kotlin val viewPager: ViewPager2 = findViewById(R.id.view_pager) val tabLayout: TabLayout = findViewById(R.id.tab_layout) val adapter = MyFragmentAdapter(this) viewPager.adapter = adapter TabLayoutMediator(tabLayout, viewPager) { tab, position -> tab.text = "Tab ${position + 1}" }.attach() ``` 这样就可以实现 ViewPager2+TabLayout+Fragment 实现页面切换了。注意,TabLayoutMediator 是用来关联 TabLayout 和 ViewPager2 的,它的第一个参数是 TabLayout,第二个参数是 ViewPager2,第三个参数是一个回调函数,用来设置 TabLayout 的标签文本。在最后一行调用 attach() 方法即可完成关联。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值