当前位置: 首页 > 知识库问答 >
问题:

如何按活动添加选项卡项?

诸葛柏
2023-03-14

我需要的TabLayout有一个“x”的标签数量,这可以根据用户的数据,已经在数据库中有所不同

My xml:在此处输入代码

        <com.google.android.material.tabs.TabItem
            android:id="@+id/posto1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Posto Shell" />

        <com.google.android.material.tabs.TabItem
            android:id="@id/posto2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Posto Guanabara" />

我的代码:

select_bar.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener {
override fun onTabSelected(tab: TabLayout.Tab?) {
            when (tab?.position) {
                0 -> {
                    recycler_view_abastecimentos.adapter =
                        ListaAbastecimentoAdapter(applicationContext, lista)
                }
                1 -> {
                    recycler_view_abastecimentos.adapter =
                        ListaAbastecimentoAdapter(applicationContext, lista)
                }
            }
        }

共有3个答案

劳烨
2023-03-14

你可以通过列出清单来实现这一点。从列表中,您可以动态创建选项卡。

例子:

final TabLayout tabLayout = findViewById(R.id.tab_layout);
final ArrayList<Hobby> hobbyList = getHobbyListFromDb();
if (hobbyList.size() > 0) {
   for (int i = 0; i < hobbyList.size(); i++) {
      tabLayout.addTab(tabLayout.newTab().setText(hobbyList.get(i).getName()));
   }
}
燕嘉熙
2023-03-14
 PagerAdapter pagerAdapter = new PagerAdapter(fragmentManager,
        getActivity());

mViewPager.setOffscreenPageLimit(dataCategory.size());

mViewPager.setAdapter(pagerAdapter);

mTabLayout.setupWithViewPager(mViewPager);



class PagerAdapter extends FragmentPagerAdapter {
        Context context;

        PagerAdapter(FragmentManager fm, Context context) {
            super(fm);
            this.context = context;
        }

        @Override
        public int getCount() {
            return dataCategory.size();
        }

        @Override
        public Fragment getItem(int position) {
            return SubFragment.newInstance(dataCategory.get(position),position, gridType);
         }

        @Override
        public CharSequence getPageTitle(int position) {
            // Generate title based on item position
            // return tabTitles[position];
            return dataCategory.get(position).getCat_Name();
        }

        
    }
阎懿轩
2023-03-14

你可以这样做:

 TabLayout tabLayout = ...;
 tabLayout.addTab(tabLayout.newTab().setText("Tab 1"));
 tabLayout.addTab(tabLayout.newTab().setText("Tab 2"));
 tabLayout.addTab(tabLayout.newTab().setText("Tab 3"));

请参阅此处的文档:https://developer.android.com/reference/com/google/android/material/tabs/TabLayout

 类似资料:
  • 我正试图理解onclick事件,但却被弄糊涂了? 我有一个onclick按钮在一个“tab”内容。当我点击这个onclick按钮时,它会打开标记为“tokyo”的正确选项卡,但它不会继续/添加活动类。 第一个选项卡内容中的“我的”按钮是: 我不明白如何告诉它做相同的onclick事件,但添加活动类到“东京”选项卡从这个新的按钮点击? 以下是完整的代码:

  • 问题内容: 我们开发了一个Chrome扩展程序,我想用Selenium测试我们的扩展程序。我创建了一个测试,但是问题是我们的扩展程序在安装后会打开一个新选项卡,我认为我从另一个选项卡中得到了例外。是否可以切换到我正在测试的活动标签?另一个选择是先禁用扩展名,然后登录到我们的网站,然后再启用该扩展名。可能吗?这是我的代码: 测试失败,原因是,因为在新选项卡(由扩展名打开)中,“登录”不可见(我认为仅

  • 因此,我使用ViewPager,使用ActionBar选项卡式活动创建了一个Android应用程序项目。我还创建了两个片段类,并附带了相应的片段布局。当选择相应的选项卡时,我将片段返回到SectionsPagerAdapter。 现在我有一些问题。我的印象是,每次选择一个选项卡时,它都会调用片段类并进入片段的onCreateView,但它只发生一次。 我想要实现的是知道何时选择选项卡,以及相应的片

  • 它可能得到当前的活动选项卡在火狐使用硒?我创建的应用程序是半自动的(用户正在打开标签,如果他想转储其中一个,他只是点击热键)。 但我有问题,当用户打开多个标签,我需要知道哪一个我应该切换到转储网站。

  • 页边距在它们之间的选项卡和选定的选项卡上有一个勾号