ViewPager+Fragment+TabLayout

    xiaoxiao2022-07-07  217

    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); } }
    最新回复(0)