📅  最后修改于: 2023-12-03 14:59:16.040000             🧑  作者: Mango
在 Android 中,ViewPager2 是一种用于实现选项卡式的用户界面或滑动分页视图的组件。它是 ViewPager 的增强版,提供更好的使用体验和更多的功能。本文将介绍 ViewPager2 的基本用法,帮助程序员们快速了解和使用。
要在 Android 项目中使用 ViewPager2,需要在项目的 build.gradle 文件中添加以下依赖项:
dependencies {
implementation 'androidx.viewpager2:viewpager2:1.0.0'
}
然后,在布局文件中添加 ViewPager2 组件,例如:
<androidx.viewpager2.widget.ViewPager2
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent" />
首先,需要创建一个 Fragment 列表,作为 ViewPager2 的页内容。例如,创建三个 Fragment:
class Fragment1 : Fragment() {
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View {
return inflater.inflate(R.layout.fragment1, container, false)
}
}
class Fragment2 : Fragment() {
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View {
return inflater.inflate(R.layout.fragment2, container, false)
}
}
class Fragment3 : Fragment() {
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View {
return inflater.inflate(R.layout.fragment3, container, false)
}
}
然后,在 Activity 中创建一个 FragmentStateAdapter,用于将 Fragment 列表加载到 ViewPager2 中:
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val fragments = listOf(Fragment1(), Fragment2(), Fragment3())
val adapter = object : FragmentStateAdapter(this) {
override fun getItemCount(): Int = fragments.size
override fun createFragment(position: Int): Fragment = fragments[position]
}
viewpager.adapter = adapter
}
}
最后,就可以滑动 ViewPager2 查看不同的 Fragment 了。如果需要当前页的更改通知,请添加一个 OnPageChangeCallback:
viewpager.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() {
override fun onPageSelected(position: Int) {
// do something
}
})
ViewPager2 提供了很多其他的功能,如设置滑动方向、禁止滑动等。这里列举几个常用的:
viewpager.orientation = ViewPager2.ORIENTATION_VERTICAL
viewpager.isUserInputEnabled = false
viewpager.setCurrentItem(1, false)
本文介绍了 ViewPager2 的基本用法和常见设置,希望可以帮助程序员们快速了解和使用。完整示例代码可参考 GitHub 仓库 android-viewpager2-example。