上面ViewPager+下面的tab
xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tl="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<androidx.viewpager.widget.ViewPager
android:id="@+id/home_viewpager"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"/>
<com.flyco.tablayout.CommonTabLayout
android:id="@+id/home_tablayout"
android:layout_width="match_parent"
android:layout_height="66dp"
android:background="#ffffff"
tl:tl_iconGravity="TOP"
tl:tl_iconHeight="30dp"
tl:tl_iconMargin="5dp"
tl:tl_iconWidth="30dp"
tl:tl_indicator_bounce_enable="false"
tl:tl_indicator_color="#0025ff"
tl:tl_indicator_gravity="TOP"
tl:tl_textSelectColor="#0025ff"
tl:tl_textUnselectColor="#454544"
tl:tl_textsize="14sp"
tl:tl_underline_color="#DDDDDD"
tl:tl_underline_gravity="TOP"
tl:tl_underline_height="1dp"/>
</LinearLayout>
activity:
private ArrayList<Fragment> mFragments = new ArrayList<>();
private String[] mTitles = {"首页", "资讯", "我的"};
private int[] mIconUnselectIds = {
R.mipmap.home_unselect, R.mipmap.collect_unselect,
R.mipmap.my_unselect};
private int[] mIconSelectIds = {
R.mipmap.home_selected, R.mipmap.collect_selected,
R.mipmap.my_selected};
private ArrayList<CustomTabEntity> mTabEntities = new ArrayList<>();
tab,viewPager设置监听:
binding.homeTablayout.setOnTabSelectListener(new OnTabSelectListener() {
@Override
public void onTabSelect(int position) {
// binding.homeTablayout.setCurrentTab(position);
binding.homeViewpager.setCurrentItem(position);
}
@Override
public void onTabReselect(int position) {
}
});
binding.homeViewpager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
binding.homeTablayout.setCurrentTab(position);
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
viewpager设置适配器
//viewpager设置适配器
MyPagerAdapter adapter = new MyPagerAdapter(getSupportFragmentManager());
binding.homeViewpager.setAdapter(adapter);
添加下面的tab
//添加下面的tab
for (int i = 0; i < mTitles.length; i++) {
mTabEntities.add(new TabEntity(mTitles[i], mIconSelectIds[i], mIconUnselectIds[i]));
}
binding.homeTablayout.setTabData(mTabEntities);
viewPager的适配器
package com.example.app2.adapter;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentPagerAdapter;
import com.example.app2.R;
import com.example.app2.fragment.HomeFragment;
import com.example.app2.fragment.MyFragment;
import com.example.app2.fragment.NewsFragment;
import java.util.ArrayList;
public class MyPagerAdapter extends FragmentPagerAdapter {
private ArrayList<Fragment> mFragments = new ArrayList<>();
private String[] mTitles = {"首页", "资讯", "我的"};
private int[] mIconUnselectIds = {
R.mipmap.home_unselect, R.mipmap.collect_unselect,
R.mipmap.my_unselect};
private int[] mIconSelectIds = {
R.mipmap.home_selected, R.mipmap.collect_selected,
R.mipmap.my_selected};
public MyPagerAdapter(FragmentManager fm) {
super(fm);
//添加fragment
mFragments.add(new HomeFragment());
mFragments.add(new NewsFragment());
mFragments.add(new MyFragment());
}
@Override
public int getCount() {
return mFragments.size();
}
@Override
public CharSequence getPageTitle(int position) {
return mTitles[position];
}
@Override
public Fragment getItem(int position) {
return mFragments.get(position);
}
}