📜  Android 中的 ViewPager2 示例(1)

📅  最后修改于: 2023-12-03 14:59:16.040000             🧑  作者: Mango

Android 中的 ViewPager2 示例

在 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 提供了很多其他的功能,如设置滑动方向、禁止滑动等。这里列举几个常用的:

  1. 设置滑动方向:调用 viewpager.orientation 属性即可。例如,设置为垂直方向:
viewpager.orientation = ViewPager2.ORIENTATION_VERTICAL
  1. 禁止滑动:设置 viewpager.isUserInputEnabled 属性为 false 即可。
viewpager.isUserInputEnabled = false
  1. 设置初始页:调用 viewpager.setCurrentItem(position, false) 方法即可。例如,设置初始页为第二个:
viewpager.setCurrentItem(1, false)
总结

本文介绍了 ViewPager2 的基本用法和常见设置,希望可以帮助程序员们快速了解和使用。完整示例代码可参考 GitHub 仓库 android-viewpager2-example