android: viewpager2+tablayout标签

一,代码:

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"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical">

<com.google.android.material.tabs.TabLayout
    android:id="@+id/tab_layout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:tabMode="fixed"
    app:tabGravity="fill"
    app:tabIndicatorFullWidth="false"
    app:tabIndicatorColor="#00ff00"
    app:tabRippleColor="#0000ff"
    app:tabTextColor="#000000"
    app:tabSelectedTextColor="#38A9FF" />

<androidx.viewpager2.widget.ViewPager2
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/fragViewPager"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_weight="1"
    />

</LinearLayout>

java

activity

package com.example.okdemo1.activity;

import android.os.Bundle;

import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
import androidx.fragment.app.Fragment;
import androidx.viewpager2.widget.ViewPager2;

import com.example.okdemo1.R;
import com.example.okdemo1.adapter.FragAdapter;
import com.example.okdemo1.fragment.Cate1Fragment;
import com.example.okdemo1.fragment.Cate2Fragment;
import com.example.okdemo1.fragment.Cate3Fragment;
import com.example.okdemo1.fragment.HomeFragment;
import com.example.okdemo1.fragment.MessageFragment;
import com.example.okdemo1.fragment.ServiceFragment;
import com.google.android.material.tabs.TabLayout;
import com.google.android.material.tabs.TabLayoutMediator;

import java.util.ArrayList;
import java.util.List;

public class Page2Activity extends AppCompatActivity {
    private List<Fragment> fragmentList = new ArrayList<>();
    private ViewPager2 vp_content;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        EdgeToEdge.enable(this);
        setContentView(R.layout.activity_page2);

        //添加fragment到列表
        fragmentList.add(new Cate1Fragment());
        fragmentList.add(new Cate2Fragment());
        fragmentList.add(new Cate3Fragment());
        //创建adapter
        FragAdapter viewPagerAdapter=new FragAdapter(this,fragmentList);//创建适配器对象

        //得到viewpager
        vp_content = findViewById(R.id.fragViewPager);
        vp_content.setAdapter(viewPagerAdapter); // 设置翻页视图的适配器
        vp_content.setCurrentItem(0);

        TabLayout tabLayout = findViewById(R.id.tab_layout);
        new TabLayoutMediator(tabLayout, vp_content,
                (tab, position) -> tab.setText("标签 " + (position + 1))
        ).attach();

    }
}

adapter

package com.example.okdemo1.adapter;

import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity;
import androidx.viewpager2.adapter.FragmentStateAdapter;

import java.util.List;

public class FragAdapter extends FragmentStateAdapter {

    private List<Fragment> mFragments;

    public FragAdapter(FragmentActivity fa,List<Fragment> fragments) {
        super(fa);
        mFragments=fragments;
    }

    @Override
    public Fragment createFragment(int position) {
        return  mFragments.get(position);
    }

    @Override
    public int getItemCount() {
        return  mFragments.size();
    }

}

 

二,测试效果:

 

posted @ 2025-05-24 17:58  刘宏缔的架构森林  阅读(159)  评论(0)    收藏  举报