Android ViewPager2 + Fragment + TabLayout + 自定义Tab样式示例代码
Android ViewPager2 + Fragment + TabLayout + 自定义Tab样式示例代码
本示例代码演示了如何使用ViewPager2、Fragment和TabLayout创建带有自定义Tab样式的页面切换效果。
MainActivity.java
public class MainActivity extends AppCompatActivity {
private ViewPager2 viewPager;
private TabLayout tabLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
viewPager = findViewById(R.id.view_pager);
tabLayout = findViewById(R.id.tab_layout);
List<Fragment> fragmentList = new ArrayList<>();
fragmentList.add(new Fragment1());
fragmentList.add(new Fragment2());
fragmentList.add(new Fragment3());
viewPager.setAdapter(new FragmentAdapter(this, fragmentList));
new TabLayoutMediator(tabLayout, viewPager, (tab, position) -> {
switch (position) {
case 0:
tab.setText('Tab1');
break;
case 1:
tab.setText('Tab2');
break;
case 2:
tab.setText('Tab3');
break;
}
}).attach();
}
}
FragmentAdapter.java
public class FragmentAdapter extends FragmentStateAdapter {
private List<Fragment> fragmentList;
public FragmentAdapter(@NonNull FragmentActivity fragmentActivity, List<Fragment> fragmentList) {
super(fragmentActivity);
this.fragmentList = fragmentList;
}
@NonNull
@Override
public Fragment createFragment(int position) {
return fragmentList.get(position);
}
@Override
public int getItemCount() {
return fragmentList.size();
}
}
Fragment1.java
public class Fragment1 extends Fragment {
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment1, container, false);
}
}
Fragment2.java
public class Fragment2 extends Fragment {
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment2, container, false);
}
}
Fragment3.java
public class Fragment3 extends Fragment {
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment3, container, false);
}
}
activity_main.xml
<?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">
<com.google.android.material.tabs.TabLayout
android:id="@+id/tab_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/white"
android:elevation="4dp"
android:minHeight="?attr/actionBarSize"
app:tabGravity="fill"
app:tabIndicatorColor="@color/colorPrimary"
app:tabIndicatorHeight="2dp"
app:tabMode="fixed"
app:tabSelectedTextColor="@color/colorPrimary"
app:tabTextColor="@android:color/darker_gray" />
<androidx.viewpager2.widget.ViewPager2
android:id="@+id/view_pager"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
fragment1.xml、fragment2.xml、fragment3.xml
自定义布局,用于展示不同的内容。
注意:
- 以上代码仅供参考,实际使用时需要根据具体需求进行修改。
- 请确保项目中已经添加了必要的依赖库,例如ViewPager2、TabLayout等。
- 可以根据需要对Tab样式进行自定义,例如设置背景颜色、文字颜色、图标等。
- 在fragment1.xml、fragment2.xml、fragment3.xml中设计每个Fragment的具体内容。
- 可以根据需求增加更多的Fragment和Tab。
希望本示例代码对您有所帮助。如果您有任何问题,请随时提问。
原文地址: https://www.cveoy.top/t/topic/oV20 著作权归作者所有。请勿转载和采集!