单击选项卡时,我想显示两个片段
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