单击选项卡时,我想显示两个片段

Posted

技术标签:

【中文标题】单击选项卡时,我想显示两个片段【英文标题】:I want to show two fragments when I click a tab 【发布时间】:2021-05-28 23:57:58 【问题描述】:

如何使用TabLayout同时显示两个片段?

// main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_
    android:layout_
    android:orientation="vertical"
    tools:context=".MainActivity">


   <androidx.viewpager.widget.ViewPager
       android:id="@+id/pager"
       android:layout_
       android:layout_>

   </androidx.viewpager.widget.ViewPager>
   <androidx.viewpager.widget.ViewPager
       android:layout_
       android:layout_
       android:id="@+id/viewPager">
      
      <com.google.android.material.tabs.TabLayout
          android:id="@+id/tab_layout"
          android:layout_
          android:layout_
          app:tabMode="scrollable"/>
      
   </androidx.viewpager.widget.ViewPager>
</LinearLayout>

// main.java

public class MainActivity extends AppCompatActivity 
    //initialize variable
    TabLayout tabLayout;
    ViewPager viewPager,pager;


    @Override
    protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //assign variable
        tabLayout=findViewById(R.id.tab);
        viewPager=findViewById(R.id.viewPager);
        pager=findViewById(R.id.pager);

        viewPager.setAdapter(new PagerAdapter(getSupportFragmentManager()));
        pager.setAdapter(new PagerAdapter(getSupportFragmentManager()));
        tabLayout.setupWithViewPager(viewPager);
        tabLayout.setupWithViewPager(pager);
        tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() 
            @Override
            public void onTabSelected(TabLayout.Tab tab) 
                viewPager.setCurrentItem(tab.getPosition());
            

            @Override
            public void onTabUnselected(TabLayout.Tab tab) 

            

            @Override
            public void onTabReselected(TabLayout.Tab tab) 

            
        );

    

// pagerAdapter.java

public class PagerAdapter extends FragmentPagerAdapter 
    String[] text="AAAA","BBBB","CCCC";
    @SuppressLint("WrongConstant")
    public PagerAdapter(@NonNull FragmentManager fm) 
        super(fm, FragmentStatePagerAdapter.BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT);
    
    @NonNull
    @Override
    public Fragment getItem(int position) 
        if(position==0)
            return new  AFragment();
        
        if(position==1)
            return new  Bfragment();
        
        if(position==2)
            return new  CFragment();
        
        return null;
    
    @Override
    public int getCount() 
        return text.length;
    
    @Nullable
    @Override
    public CharSequence getPageTitle(int position) 
        return text[position];
     

如果你知道任何想法,你能帮助我吗? How to display two fragments at the same time using TabLayout? 一个类似的问题,但我不知道如何将解决方案应用于我的任务

【问题讨论】:

你能解释更多你想要什么的信息吗 【参考方案1】:

如果你想一次设置两个Fragment,那么你需要在Activity中设置两个Fragment Manager。简单!

当您更改选项卡时,您需要更改 Fragments Manager 的两个片段。 喜欢:您选择Tab 1,然后在第一个顶部片段管理器中设置F1,并在底部片段管理器中设置F2。 当您选择Tab 2 时,然后在第一个顶部片段管理器中设置F3 并在底部片段管理器中设置F4

【讨论】:

我不知道该怎么做

以上是关于单击选项卡时,我想显示两个片段的主要内容,如果未能解决你的问题,请参考以下文章

当我从一个选项卡单击到另一个选项卡时,如何使TabLayout中的选项卡不可滚动

当我单击“AboSee”选项卡时,它会打开选​​项卡,但不显示选项卡栏

单击选项卡时,选项卡栏控制器不显示 XIB UIViewController

如何在powershell中使用winforms右键单击选项卡时捕获事件

更改选项卡时避免/防止片段刷新

删除选项卡时在 ActionBar 选项卡片段中运行代码