android - PagerSlidingTabStrip - 在运行时添加新选项卡

标签 android tabs android-viewpager pagerslidingtabstrip

我正在使用 PagerSlidingTabStrip 来显​​示 3 个选项卡,每个选项卡中都包含 ListView 。

我有一个场景,我需要在运行时添加新标签,比如在滑动刷新时我需要将新标签添加到左端。

下面是我添加新标签的代码:

pagerAdapter.TABS_COUNT = 4; //global value to change the tabs count
pagerAdapter.notifyDataSetChanged();
pagerSlidingTabStrip.setViewPager(mPager);

但有时其中一个选项卡内容变为空 listview 不可滚动。

实现此目标的最佳方法是什么?

最佳答案

这里有一个例子说明如何做,不要说这是最好的方法,但我写得很匆忙https://github.com/jacktech24/pager-sliding-strip-example

首先,您需要一个自定义适配器,这里我使用了一个简单的适配器,它只在每个 fragment 上显示文本,但很容易修改它以支持普通 fragment 等。示例中的 mTab​​s 是:

mTabs = (PagerSlidingTabStrip) findViewById(R.id.tabs);

然后是例子

private class TestAdapter extends FragmentPagerAdapter {

        private ArrayList<String> tabs = new ArrayList<>();

        public TestAdapter(FragmentManager supportFragmentManager) {
            super(supportFragmentManager);
        }

        @Override
        public Fragment getItem(int position) {
            Fragment frag = new ExampleFragment();
            Bundle bundle = new Bundle();
            bundle.putString("title", (String) getPageTitle(position));
            frag.setArguments(bundle);
            return frag;
        }

        @Override
        public CharSequence getPageTitle(int position) {
            return tabs.get(position);
        }

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

        public void addTab(String tab) {
            tabs.add(tab);
            notifyDataSetChanged();
            mTabs.notifyDataSetChanged();
        }

        public void removeTab(int position) {
            tabs.remove(position);
            notifyDataSetChanged();
            mTabs.notifyDataSetChanged();
        }

    }

那么,就这么简单:

    //mAdapter is instance of your adapter
    mAdapter.addTab("test 1");
    mAdapter.addTab("test 2");
    mAdapter.addTab("test 3");


    FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            mAdapter.addTab("test "+(mAdapter.getCount()+1));
        }
    });

关于android - PagerSlidingTabStrip - 在运行时添加新选项卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33147074/

相关文章:

android - 如何自定义单个选项卡? (更改背景颜色、指示器颜色和文本颜色)

java - 如何像在 xml 中那样改变 java 中 textview 的位置

java - 无法在 JNI 中将 GetMethodID 与字节数组参数一起使用

java - 为什么我不能使用 populateViewHolder 覆盖方法?

ionic-framework - 如何在所有页面上显示 Ionic Tabs?

java - 使用操作栏选项卡在 fragment 之间切换

javascript - 如何禁用 Jquery UI 中除事件选项卡之外的其他选项卡。使用“下一个”和“上一个”按钮

安卓图片推文

java - 允许滚动 EditText 和滑动 ViewPager

android - 我可以使用 ViewPager2 设置非线性(旧式)动画吗?