📜  如何使用 ViewPager 和 Fragments 在 Android 中实现 TabLayout

📅  最后修改于: 2021-10-28 02:38:19             🧑  作者: Mango

在本文中,我们将学习如何在应用程序中使用ViewPager添加TabLayout 。 TabLayout 提供水平布局来显示选项卡。如果使用TabLayout ,则同时使用Fragment ,因为Fragment重量轻,如果添加更多Fragment ,应用程序可以在单个屏幕上拥有更多功能。每当用户单击选项卡时,它都会导致一个 Fragment 到另一个 Fragment 的交易。 ViewPager 用于在选项卡之间滑动。 WhatsAppFacebook等是带有 ViewPager 的 TabLayout 的一个很好的例子。这就是TabLayout 的样子。

方法:

  1. 通过右键单击Java包创建一个AlgorithmFragment
    选择新 -> 片段 -> 选择Fragment(Blank)
  2. 按照上述步骤处理CourseFragmentLoginFragment
  3. 现在在AlgorithmFragment.xml文件中添加以下代码。这里在布局中添加了一个 TextView。
  4. 现在在CourseFragment.xml文件中添加以下代码。这里在布局中添加了一个 textView。
  5. 现在在LoginFragment.xml文件中添加以下代码。这里在布局中添加了一个 textView。
  6. 现在通过扩展FragmentPagerAdapter类为我们的 ViewPager 创建一个适配器。在这个类中,我们将覆盖三个方法getItem()getCount()getPageTitle() 。 getItem 方法给出相对于位置的片段,getCount 方法给出存在的片段总数,getPageTitle 方法给出片段的标题。
  7. MainActivity 中添加以下代码。 Java文件。在这个文件中,我们设置了我们的适配器并使用 ViewPager 附加了我们的 TabLayout。
    AlgorithmFragment.xml
    
    
      
        
      
    


    CourseFragment.xml
    
    
      
        
      
    


    LoginFragment.xml
    
    
      
        
      
    


    ViewPagerAdapter.java
    package org.geeksforgeeks.gfgtablayout;
      
    import androidx.annotation.NonNull;
    import androidx.fragment.app.Fragment;
    import androidx.fragment.app.FragmentManager;
    import androidx.fragment.app.FragmentPagerAdapter;
      
    public class ViewPagerAdapter
     extends FragmentPagerAdapter {
      
        public ViewPagerAdapter(
    @NonNull FragmentManager fm)
        {
            super(fm);
        }
      
        @NonNull
        @Override
        public Fragment getItem(int position)
        {
            Fragment fragment = null;
            if (position == 0)
                fragment = new AlgorithmFragment();
            else if (position == 1)
                fragment = new CourseFragment();
            else if (position == 2)
                fragment = new LoginFragment();
      
            return fragment;
        }
      
        @Override
        public int getCount()
        {
            return 3;
        }
      
        @Override
        public CharSequence getPageTitle(int position)
        {
            String title = null;
            if (position == 0)
                title = "Algorithm";
            else if (position == 1)
                title = "Courses";
            else if (position == 2)
                title = "Login";
            return title;
        }
    }


    MainActivity.java
    package org.geeksforgeeks.gfgtablayout;
      
    import androidx.appcompat.app.AppCompatActivity;
    import androidx.viewpager.widget.ViewPager;
    import android.os.Bundle;
    import android.widget.Toolbar;
      
    import com.google.android.material.tabs.TabLayout;
      
    public class MainActivity
     extends AppCompatActivity {
        TabLayout tabLayout;
        ViewPager viewPager;
        ViewPagerAdapter viewPagerAdapter;
      
        @Override
        protected void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
      
            viewPager = findViewById(R.id.view_pager);
            tabLayout = findViewById(R.id.tabs);
      
            viewPagerAdapter = new ViewPagerAdapter(
                getSupportFragmentManager());
            viewPager.setAdapter(viewPagerAdapter);
      
            // It is used to join TabLayout with ViewPager.
            tabLayout.setupWithViewPager(viewPager);
        }
    }


输出:

想要一个更快节奏和更具竞争力的环境来学习 Android 的基础知识吗?
单击此处前往由我们的专家精心策划的指南,旨在让您立即做好行业准备!