ViewPager
ViewPager是实现滑动效果的控件
可以添加多个Fragment
用FragmentViewPagerAdapter适配器适配用来添加Fragment和TabLayout
Fragment
fragment请连接https://blog.youkuaiyun.com/SageDeceiveFiend/article/details/90414311
TabLayout
用来显示上方选项卡效果的控件需要先导依赖
implementation ‘com.android.support:design:28.0.0’
案例展示
public class Onew extends Fragment {
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View inflate = inflater.inflate(R.layout.simsim0, container, false);
ViewPager viewById = inflate.findViewById(R.id.vp5);
TabLayout tb = inflate.findViewById(R.id.tb);
ArrayList<Fragment> fragments = new ArrayList<>();
OneOnew oneOnew=new OneOnew();
One one = new One();
Tow tow = new Tow();
Tow tow1 = new Tow();
fragments.add(oneOnew);
fragments.add(one);
fragments.add(tow);
fragments.add(tow1);
ArrayList<String> titles = new ArrayList<>();
titles.add("推荐");
titles.add("手机");
titles.add("智能");
titles.add("电视5周年");
titles.add("笔记本");
//解决Fragment中嵌套ViewPager,切换Fragment之后ViewPager不显示的问题
Fr1 fr = new Fr1(this.getChildFragmentManager(), fragments,titles);
viewById.setAdapter(fr);
tb.setupWithViewPager(viewById);
return inflate;
}
}
//适配器
public class Fr1 extends FragmentPagerAdapter {
ArrayList<Fragment> fragments;
ArrayList<String> titles;
public Fr1(FragmentManager fm, ArrayList<Fragment> fragments, ArrayList<String> titles) {
super(fm);
this.fragments = fragments;
this.titles = titles;
}
@Override
public Fragment getItem(int i) {
return fragments.get(i);
}
@Override
public int getCount() {
return fragments.size();
}
//用来展示上方选项卡
@Nullable
@Override
public CharSequence getPageTitle(int position) {
return titles.get(position);
}
}
//布局文件
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent">
<android.support.design.widget.TabLayout
android:id="@+id/tb"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</android.support.design.widget.TabLayout>
<android.support.v4.view.ViewPager
android:id="@+id/vp5"
android:layout_below="@id/tb"
android:layout_width="match_parent"
android:layout_height="match_parent">
</android.support.v4.view.ViewPager>
</RelativeLayout>
//主activity代码
public class Main4Activity extends AppCompatActivity {
RadioButton r1;
RadioButton r2;
RadioButton r3;
RadioButton r4;
RadioButton r5;
TabLayout tb;
ViewPager vp;
Frr frr;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main4);
r1 = findViewById(R.id.r1);
r2 = findViewById(R.id.r2);
r3 = findViewById(R.id.r3);
r4 = findViewById(R.id.r4);
r5 = findViewById(R.id.r5);
tb = findViewById(R.id.tb);
vp = findViewById(R.id.vp);
ArrayList<Fragment> fragments = new ArrayList<>();
Onew onew=new Onew();
Tow tow=new Tow();
One one=new One();
Tow tow1=new Tow();
One one1=new One();
fragments.add(onew);
fragments.add(tow);
fragments.add(one);
fragments.add(tow1);
fragments.add(one1);
frr = new Frr(getSupportFragmentManager(), fragments);
vp.setAdapter(frr);
r1.setChecked(true);
r1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
vp.setCurrentItem(0);
}
});
r2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
vp.setCurrentItem(1);
}
});
r3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
vp.setCurrentItem(2);
}
});
r4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
vp.setCurrentItem(3);
}
});
r5.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
vp.setCurrentItem(4);
}
});
vp.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int i, float v, int i1) {
}
@Override
public void onPageSelected(int i) {
if (i == 0) {
r1.setChecked(true);
} else if (i == 1) {
r2.setChecked(true);
} else if (i == 2) {
r3.setChecked(true);
} else if (i == 3) {
r4.setChecked(true);
} else if (i == 4){
r5.setChecked(true);
}
frr.notifyDataSetChanged();
}
@Override
public void onPageScrollStateChanged(int i) {
frr.notifyDataSetChanged();
}
});
}
//主布局
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".Day13.Main4Activity">
<android.support.v4.view.ViewPager
android:id="@+id/vp"
android:layout_above="@id/rg"
android:layout_width="match_parent"
android:layout_height="match_parent">
</android.support.v4.view.ViewPager>
<RadioGroup
android:id="@+id/rg"
android:gravity="center"
android:orientation="horizontal"
android:layout_alignParentBottom="true"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<RadioButton
android:layout_weight="1"
android:id="@+id/r1"
android:button="@null"
android:background="@drawable/simsim"
android:layout_width="40dp"
android:layout_height="60dp" />
<RadioButton
android:layout_weight="1"
android:id="@+id/r2"
android:button="@null"
android:background="@drawable/simsim"
android:layout_width="40dp"
android:layout_height="60dp" />
<RadioButton
android:layout_weight="1"
android:id="@+id/r3"
android:button="@null"
android:background="@drawable/simsim"
android:layout_width="40dp"
android:layout_height="60dp" />
<RadioButton
android:layout_weight="1"
android:id="@+id/r4"
android:button="@null"
android:background="@drawable/simsim"
android:layout_width="40dp"
android:layout_height="60dp" />
<RadioButton
android:layout_weight="1"
android:id="@+id/r5"
android:button="@null"
android:background="@drawable/simsim"
android:layout_width="40dp"
android:layout_height="60dp" />
</RadioGroup>
</RelativeLayout>