ViewPager+flycoTabLayout联动
FlycoTabLayou依赖
implementation ‘com.flyco.tablayout:FlycoTabLayout_Lib:2.0.2@aar’
布局
<androidx.viewpager.widget.ViewPager
android:layout_below="@id/toolbar"
android:layout_above="@id/tablayout"
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<com.flyco.tablayout.CommonTabLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:id="@+id/tablayout"/>
MainActivity
public class MainActivity extends AppCompatActivity {
DrawerLayout drawerLayout;
ViewPager viewPager;
// TabLayout tableLayout;
CommonTabLayout commonTabLayout;
List<String> titles=new ArrayList<>();//存标题
List<Fragment> fragments=new ArrayList<>();// 存fragement
ArrayList<CustomTabEntity> customTabEntities=new ArrayList<>();//存tablayout数据
Fragment fragment1,fragment2,fragment3,fragment4;
MyAdapter adapter;
String[] strings=new String[]{
"android.permission.CALL_PHONE",
"android.permission.READ_EXTERNAL_STORAGE",
"android.permission.WRITE_EXTERNAL_STORAGE",
"android.permission.CAMERA"
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//动态授权
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){
requestPermissions(strings,110);
}
init();
//tablayout数据
addTablayout();
//联动
setChange();
//点击按钮切换view pager
buttonClick();
}
private void buttonClick() {
findViewById(R.id.one).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//跳转到viewpager指定下标界面
viewPager.setCurrentItem(0);
drawerLayout.closeDrawer(Gravity.LEFT);
}
});
findViewById(R.id.two).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
viewPager.setCurrentItem(1);
drawerLayout.closeDrawer(Gravity.LEFT);
}
});
findViewById(R.id.three).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
viewPager.setCurrentItem(2);
drawerLayout.closeDrawer(Gravity.LEFT);
}
});
findViewById(R.id.four).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
viewPager.setCurrentItem(3);
drawerLayout.closeDrawer(Gravity.LEFT);
}
});
}
private void setChange() {
adapter=new MyAdapter(getSupportFragmentManager(),fragments,titles,this);
viewPager.setAdapter(adapter);
commonTabLayout.setTabData(customTabEntities);
//点击tablayout 切换viewpager
commonTabLayout.setOnTabSelectListener(new OnTabSelectListener() {
@Override
public void onTabSelect(int position) {
viewPager.setCurrentItem(position);
}
@Override
public void onTabReselect(int position) {
}
});
//viewpager切换时,commontablayout跟着切换
viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
commonTabLayout.setCurrentTab(position);
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
}
private void addTablayout() {
titles.add("aaa");
titles.add("bbb");
fragments.add(fragment1);
fragments.add(fragment2);
fragments.add(fragment3);
fragments.add(fragment4);
customTabEntities.add(new MyCustom("第一个",R.mipmap.a,R.mipmap.b));
customTabEntities.add(new MyCustom("第二个",R.mipmap.a,R.mipmap.b));
customTabEntities.add(new MyCustom("第三个",R.mipmap.a,R.mipmap.b));
customTabEntities.add(new MyCustom("第四个",R.mipmap.a,R.mipmap.b));
commonTabLayout.setTabData(customTabEntities);
}
private void init() {
drawerLayout=findViewById(R.id.drawerLayout);
viewPager=findViewById(R.id.viewpager);
// tableLayout=findViewById(R.id.tablayout);
commonTabLayout=findViewById(R.id.tablayout);
fragment1=new MyFragment1();
fragment2=new MyFragment2();
fragment3=new MyFragment3();
fragment4=new MyFragment4();
}
ViewPager适配器
public class MyAdapter extends FragmentPagerAdapter {
List<Fragment> fragments;
List<String> titles;
Context context;
public MyAdapter(@NonNull FragmentManager fm, List<Fragment> fragments, List<String> titles, Context context) {
super(fm);
this.fragments = fragments;
this.titles = titles;
this.context = context;
}
@NonNull
@Override
public Fragment getItem(int position) {
return fragments.get(position);
}
@Override
public int getCount() {
return fragments.size();
}
@Nullable
@Override
public CharSequence getPageTitle(int position) {
return titles.get(position);
}
}