我为Text实现了Astuetz的PagerSlidingTabStrip作为Tab。但我希望同时拥有图标和文本。我从这个链接了解到Astuetz可以有文本或iocn。我可以为这个定制布局吗?此外,我希望选项卡从中心开始,下划线指示器是中心固定的。
MainActivity
public class MainActivity extends FragmentActivity {
private PagerSlidingTabStrip tabs;
private ViewPager pager;
private MyPagerAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tabs = (PagerSlidingTabStrip) findViewById(R.id.tabs);
pager = (ViewPager) findViewById(R.id.pager);
adapter = new MyPagerAdapter(getSupportFragmentManager());
pager.setAdapter(adapter);
final int pageMargin = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 4, getResources()
.getDisplayMetrics());
pager.setPageMargin(pageMargin);
tabs.setViewPager(pager);
}
public class MyPagerAdapter extends FragmentPagerAdapter{
private final String[] TITLES = { "Contact", "Home"};
//private final int[] ICONS = { R.drawable.ic_contact, R.drawable.ic_home};
public MyPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public CharSequence getPageTitle(int position) {
return TITLES[position];
}
@Override
public int getCount() {
return TITLES.length;
}
@Override
public Fragment getItem(int position) {
return SuperAwesomeCardFragment.newInstance(position);
}
}
}
正如库中的方法所示,如果不修改代码,就无法完成此操作。你需要付出同样的代价。如以下方法所示-
for (int i = 0; i < tabCount; i++) {
if (pager.getAdapter() instanceof IconTabProvider) {
addIconTab(i, ((IconTabProvider) pager.getAdapter()).getPageIconResId(i));
} else {
addTextTab(i, pager.getAdapter().getPageTitle(i).toString());
}
}
一次只能有一个文本或图标。我建议您使用来自设计支持库的TabLayout
。您可以使用setCustomView
方法在选项卡中设置自定义视图。