📜  Kotlin 中的 Android ViewPager

📅  最后修改于: 2022-05-13 01:55:27.794000             🧑  作者: Mango

Kotlin 中的 Android ViewPager

ViewPager允许用户向左或向右滑动包含数据的页面或查看全新的屏幕。您可以在所有大多数社交媒体应用程序中找到此功能。 WhatsApp 还在其应用程序打开时向用户显示三个选项卡:聊天、状态和通话。由于我们已经看到了此功能的实际应用,因此学习此功能将是令人兴奋的。它还用于帮助用户在首次安装应用程序时了解应用程序及其功能。我们将使用TabLayout作为在应用程序中应用ViewPager概念的示例。阅读本文后,您将很容易在任何应用程序中应用此功能。

简要介绍

我们将通过增加TabLayout和ViewPager在activity_main.xml中开始。执行此操作后,我们将向应用程序添加三个空白片段。我们将根据需要更改片段的所有三个 XML 文件中的文本。现在,我们将创建 PageAdapter.kt 类,在该类中我们必须使用三个函数getCount()getItem()getPageTitle() 。最后,我们只需要调用AdapterTabLayout 。下面给出了一个示例 gif,以获取有关我们正在实施的想法的实用知识。

页面适配器中使用的重要函数

  • getCount() –返回要显示的片段数。
  • getItem() –返回位置索引处的片段。
  • getPageTitle –返回给页面的标题(在我们的例子中,给每个页面的标题,如 tab1、tab2、tab3)

分步实施

第 1 步:使用 Empty Activity 创建项目

要在 Android Studio 中创建新项目,请参阅如何在 Android Studio 中创建/启动新项目。确保您在创建项目时选择了Kotlin作为语言。



步骤 2:使用 activity_main.xml 文件

导航到app > res > layout > activity_main.xml并将以下代码添加到该文件中。下面是activity_main.xml文件的代码这里我们刚刚添加了 TabLayout 和 ViewPager。

XML


  
    
    
  
    
    


XML


  
    
  


XML


  
    
  


XML


  
    
  


Kotlin
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentManager
import androidx.fragment.app.FragmentPagerAdapter
  
class PageAdapter(fm:FragmentManager) : FragmentPagerAdapter(fm) {
    override fun getCount(): Int {
        return 3;
    }
  
    override fun getItem(position: Int): Fragment {
        when(position) {
            0 -> {
                return Fragment1()
            }
            1 -> {
                return Fragment2()
            }
            2 -> {
                return Fragment3()
            }
            else -> {
                return Fragment1()
            }
        }
    }
  
    override fun getPageTitle(position: Int): CharSequence? {
        when(position) {
            0 -> {
                return "Tab 1"
            }
            1 -> {
                return "Tab 2"
            }
            2 -> {
                return "Tab 3"
            }
        }
        return super.getPageTitle(position)
    }
  
}


Kotlin
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.viewpager.widget.ViewPager
import com.google.android.material.tabs.TabLayout
  
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
  
        val viewPager = findViewById(R.id.viewPager)
        viewPager.adapter = PageAdapter(supportFragmentManager)
  
        val tabLayout = findViewById(R.id.tabLayout)
        tabLayout.setupWithViewPager(viewPager)
          
    }
}


第 3 步:添加空白片段

这是在 Android Studio 中创建空白片段的路径。

单击空白片段后,命名片段并单击完成。总共制作三个片段。



第 4 步:使用片段的 XML 文件

在每个片段中,我们都更改了文本并将基本内容添加到我们的 XML 文件中,例如 textColor、textSize 等。

片段 1

XML



  
    
  

片段 2

XML



  
    
  

片段 3

XML



  
    
  

步骤 5:添加页面适配器



科特林

import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentManager
import androidx.fragment.app.FragmentPagerAdapter
  
class PageAdapter(fm:FragmentManager) : FragmentPagerAdapter(fm) {
    override fun getCount(): Int {
        return 3;
    }
  
    override fun getItem(position: Int): Fragment {
        when(position) {
            0 -> {
                return Fragment1()
            }
            1 -> {
                return Fragment2()
            }
            2 -> {
                return Fragment3()
            }
            else -> {
                return Fragment1()
            }
        }
    }
  
    override fun getPageTitle(position: Int): CharSequence? {
        when(position) {
            0 -> {
                return "Tab 1"
            }
            1 -> {
                return "Tab 2"
            }
            2 -> {
                return "Tab 3"
            }
        }
        return super.getPageTitle(position)
    }
  
}

第 6 步:使用 MainActivity.kt

转到MainActivity.kt文件并参考以下代码。下面是MainActivity.kt文件的代码。代码中添加了注释以更详细地理解代码。

科特林

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.viewpager.widget.ViewPager
import com.google.android.material.tabs.TabLayout
  
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
  
        val viewPager = findViewById(R.id.viewPager)
        viewPager.adapter = PageAdapter(supportFragmentManager)
  
        val tabLayout = findViewById(R.id.tabLayout)
        tabLayout.setupWithViewPager(viewPager)
          
    }
}

输出:

你也可以尝试使用这个概念在Java做一个类似的事情。单击此处获取文章。