如何在 androidstudio kotlin 中设置滑动功能

问题描述 投票:0回答:1

因此,当我首先开始我的项目时,我修改了 OnCreate 中的 MainActivity 类,以初始化其 Activity_main.xml 的函数(imagebuttons recyclerview 背景更改与开关等),这是我的主要活动。然后我想到添加滑动功能,通过从左向右滑动从主布局到第二布局。我以与创建 Mainactivity 相同的方式创建了第二个布局。我创建了该类,然后将 xml 与该类连接起来 (tools:context=".FoldersActivity") 并初始化函数。

我在互联网上发现了 ViewPager2,但我找不到任何解决方案来制作我需要的东西。谢谢。

android kotlin swipe android-viewpager2
1个回答
0
投票

首先在activity_main中添加

ViewPager2
这将充当允许用户在布局之间滑动的容器

活动_主要

<androidx.viewpager2.widget.ViewPager2
    android:id="@+id/viewPager"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

您将创建两个片段,而不是为每个布局创建单独的活动。

MainFragment
用于您的主布局。
FoldersFragment
用于第二个布局。

主片段.kt

class MainFragment : Fragment(R.layout.fragment_main) {
    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        // Initialize your functions for Main Layout here
    }
}

FoldersFragment.kt

class FoldersFragment : Fragment(R.layout.fragment_folders) {
    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        // Initialize your functions for Folders Layout here
    }
}

现在我们可以设置

ViewPager2
来处理片段之间的滑动。创建一个适配器来告诉 ViewPager2 显示哪个片段。

MainActivty.kt

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        // Reference to the ViewPager2 in activity_main.xml
        val viewPager: ViewPager2 = findViewById(R.id.viewPager)

        // List of fragments to swipe between
        val fragments = listOf(MainFragment(), FoldersFragment())

        // Set up the adapter
        val adapter = ViewPagerAdapter(this, fragments)
        viewPager.adapter = adapter
    }
}

ViewPagerAdapter.kt

class ViewPagerAdapter(
    activity: AppCompatActivity,
    private val fragments: List<Fragment>
) : FragmentStateAdapter(activity) {

    // Returns the number of fragments
    override fun getItemCount(): Int = fragments.size

    // Returns the fragment to display for the current page
    override fun createFragment(position: Int): Fragment {
        return fragments[position]
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.