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();
}
}
二,测试效果:

浙公网安备 33010602011771号