我使用PagerSlidingTabStrip显示3个标签,每个标签都包含列表视图。
我有一个场景,我需要在运行时添加新标签,比如刷卡刷新我需要在左端添加新标签。
以下是我添加新标签的代码:
pagerAdapter.TABS_COUNT = 4; //global value to change the tabs count
pagerAdapter.notifyDataSetChanged();
pagerSlidingTabStrip.setViewPager(mPager);
但有时其中一个标签内容变为空列表视图不可滚动。
我能做到这一点的最佳方式是什么?
答案 0 :(得分:0)
这是一个关于如何做到这一点的例子,不要说这是最好的方式,但是我匆匆写了https://github.com/jacktech24/pager-sliding-strip-example
首先,你需要一个自定义适配器,这里我使用了一个简单的适配器,它只在每个片段上显示文本,但是很容易修改它以支持普通片段等。例子中的mTab是:
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));
}
});