ViewPager+Fragment+TabLayout
代码实例
效果图
1.容器:ViewPager
2.数据:ArrayList<Fragment ArrayList标题
3.适配器:FragmentViewPager
重写的方法:
(1)getCount():返回数据源的总数量
(2)getItem():
(3)getPageTitle():返回标题
4.TabLayout:需要导入依赖
implementation ‘com.android.support:design:28.0.0’
布局文件
// An highlighted block
<?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"
android:orientation="vertical"
>
<RelativeLayout
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="0dp">
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent"></android.support.v4.view.ViewPager>
<LinearLayout
android:id="@+id/ll"
android:gravity="center_horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginBottom="30dp"
android:orientation="horizontal"
>
<ImageView
android:id="@+id/image1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/shixinxiaoyuandian"
/>
<ImageView
android:id="@+id/image2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/xiaobaidian"
/>
<ImageView
android:id="@+id/image3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/xiaobaidian"
/>
</LinearLayout>
</RelativeLayout>
<LinearLayout
android:layout_weight="2"
android:layout_width="match_parent"
android:layout_height="0dp">
<LinearLayout
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="match_parent"
android:background="@drawable/_103"
></LinearLayout>
<LinearLayout
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="match_parent"
android:orientation="vertical"
>
<LinearLayout
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="0dp"
android:background="@drawable/xiaolian"
></LinearLayout>
<LinearLayout
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="0dp"
android:background="@drawable/_102"
></LinearLayout>
</LinearLayout>
</LinearLayout>
</LinearLayout>
java代码
1.主类
// An highlighted block
public class Main2Activity extends AppCompatActivity {
ViewPager viewPager;
RadioGroup radioGroup;
RadioButton r1,r2,r3,r4,r5;
ArrayList<Fragment> fragments = new ArrayList<>();
MyAdapter myAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
supportRequestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main2);
viewPager = findViewById(R.id.viewP);
radioGroup = findViewById(R.id.rg);
r1 = findViewById(R.id.button1);
r2 = findViewById(R.id.button2);
r3 = findViewById(R.id.button3);
r4 = findViewById(R.id.button4);
r5 = findViewById(R.id.button5);
MyFragment4 myFragment4 = new MyFragment4();
MyFragment6 myFragment6 = new MyFragment6();
MyFragment7 myFragment7 = new MyFragment7();
MyFragment8 myFragment8 = new MyFragment8();
MyFragment9 myFragment9 = new MyFragment9();
fragments.add(myFragment4);
fragments.add(myFragment6);
fragments.add(myFragment7);
fragments.add(myFragment8);
fragments.add(myFragment9);
myAdapter = new MyAdapter(getSupportFragmentManager(),fragments);
viewPager.setAdapter(myAdapter);
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
if (checkedId == r1.getId()){
viewPager.setCurrentItem(0);
}else if (checkedId == r2.getId()){
viewPager.setCurrentItem(1);
}else if (checkedId == r3.getId()){
viewPager.setCurrentItem(2);
}else if (checkedId == r4.getId()){
viewPager.setCurrentItem(3);
}else{
viewPager.setCurrentItem(4);
}
}
});
viewPager.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 {
r5.setChecked(true);
}
}
@Override
public void onPageScrollStateChanged(int i) {
}
});
}
}
- ViewPager+TabLayout
// An highlighted block
public class MyFragment4 extends Fragment {
TabLayout tabLayout;
ViewPager viewPager;
ArrayList<String> strs = new ArrayList<>();
ArrayList<Fragment> fragments = new ArrayList<>();
MyAdapter2 myAdapter2;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.layout_myfragment4,container,false);
tabLayout = view.findViewById(R.id.tb);
viewPager = view.findViewById(R.id.vp);
strs.clear();
fragments.clear();
strs.add("推荐");
strs.add("手机");
strs.add("智能");
strs.add("电视5周年");
strs.add("笔记本");
MyFragment5 myFragment5 = new MyFragment5();
Fragment1 fragment1 = new Fragment1();
Fragment2 fragment2 = new Fragment2();
Fragment3 fragment3 = new Fragment3();
Fragment4 fragment4 = new Fragment4();
fragments.add(myFragment5);
fragments.add(fragment1);
fragments.add(fragment2);
fragments.add(fragment3);
fragments.add(fragment4);
myAdapter2 = new MyAdapter2(getFragmentManager(),strs,fragments);
viewPager.setAdapter(myAdapter2);
tabLayout.setupWithViewPager(viewPager);
return view;
}
}
3.适配器
// An highlighted block
public class MyAdapter2 extends FragmentPagerAdapter {
ArrayList<String> strList ;
ArrayList<Fragment> fragments ;
public MyAdapter2(FragmentManager fm,ArrayList<String> strs,ArrayList<Fragment> fragments) {
super(fm);
this.strList = strs;
this.fragments = fragments;
}
@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 strList.get(position);
}
}