Android Kotlin ViewPager2 中嵌套 Fragment 实现左右滑动
要在 ViewPager2 中加载 Fragment,并在 Fragment 中使用 ViewPager2 的左右滑动功能,可以按照以下步骤进行操作:
- 首先,在你的项目中添加 ViewPager2 的依赖。在 build.gradle 文件中的 dependencies 中添加以下依赖项:
implementation 'androidx.viewpager2:viewpager2:1.0.0'
- 创建一个包含 ViewPager2 的布局文件。例如,可以在 activity_main.xml 中添加以下代码:
<androidx.viewpager2.widget.ViewPager2
android:id="@+id/viewPager2"
android:layout_width="match_parent"
android:layout_height="match_parent" />
- 创建一个继承自 FragmentPagerAdapter 的适配器类。例如,可以创建一个名为 ViewPagerAdapter 的适配器类:
class ViewPagerAdapter(fragmentManager: FragmentManager, lifecycle: Lifecycle) :
FragmentStateAdapter(fragmentManager, lifecycle) {
private val fragmentList = arrayListOf<Fragment>()
fun addFragment(fragment: Fragment) {
fragmentList.add(fragment)
}
override fun getItemCount(): Int {
return fragmentList.size
}
override fun createFragment(position: Int): Fragment {
return fragmentList[position]
}
}
- 在你的 Activity 或 Fragment 中,实例化 ViewPager2 并设置适配器。例如,可以在 MainActivity 中添加以下代码:
class MainActivity : AppCompatActivity() {
private lateinit var viewPager2: ViewPager2
private lateinit var viewPagerAdapter: ViewPagerAdapter
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
viewPager2 = findViewById(R.id.viewPager2)
viewPagerAdapter = ViewPagerAdapter(supportFragmentManager, lifecycle)
// 添加 Fragment 到适配器中
viewPagerAdapter.addFragment(FirstFragment())
viewPagerAdapter.addFragment(SecondFragment())
viewPagerAdapter.addFragment(ThirdFragment())
viewPager2.adapter = viewPagerAdapter
}
}
- 创建你的 Fragment 类。例如,可以创建一个名为 FirstFragment 的 Fragment 类:
class FirstFragment : Fragment() {
private lateinit var viewPager2: ViewPager2
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
return inflater.inflate(R.layout.fragment_first, container, false)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
viewPager2 = requireActivity().findViewById(R.id.viewPager2)
viewPager2.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() {
override fun onPageSelected(position: Int) {
// 当 ViewPager2 滑动到特定页面时执行操作
}
})
}
}
这样,你就可以在 ViewPager2 中加载 Fragment,并在 Fragment 中使用 ViewPager2 的左右滑动功能了。在 Fragment 中,你可以通过 registerOnPageChangeCallback 方法注册一个回调监听器,当 ViewPager2 滑动到特定页面时执行相应操作。
原文地址: https://www.cveoy.top/t/topic/pe71 著作权归作者所有。请勿转载和采集!