我使用http://viewpagerindicator.com/库。我想创建一个TitlePageIndicator
像Gmail应用程序下面的图片:的Android ViewPagerIndicator设置标题
我到底要达到其中的第一个标题是“较新”同样的事情,最后的标题是“旧”和中心标题'[总页数]'的[页面位置]。是否有可能通过我正在使用的库来实现此目的,还是应该修改它?
我使用http://viewpagerindicator.com/库。我想创建一个TitlePageIndicator
像Gmail应用程序下面的图片:的Android ViewPagerIndicator设置标题
我到底要达到其中的第一个标题是“较新”同样的事情,最后的标题是“旧”和中心标题'[总页数]'的[页面位置]。是否有可能通过我正在使用的库来实现此目的,还是应该修改它?
我有同样的问题。在Matthieu的帮助下解决这个问题。基于ViewPagerIndicator附带的示例。
基本上听时,页面的变化和更改适配器给根据当前位置的不同页面的标题。下面给出的代码只适用于我。
如果你有这些样品的工作,你只需更换这两个文件,那就试试这个样品
改变了代码为TestFragmentAdapter这样的:
class TestFragmentAdapter extends FragmentPagerAdapter implements IconPagerAdapter {
protected static final String[] CONTENT = new String[] { "This", "Is", "stack", "overflow" };
protected static final int[] ICONS = new int[] {
R.drawable.perm_group_calendar,
R.drawable.perm_group_camera,
R.drawable.perm_group_device_alarms,
R.drawable.perm_group_location
};
private int mCount = CONTENT.length;
// CHANGE START HERE
private int current_position=0;
public void set_current_position(int i) {
current_position = i;
}
// CHANGE ENDS HERE
public TestFragmentAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
return TestFragment.newInstance(CONTENT[position % CONTENT.length]);
}
@Override
public int getCount() {
return mCount;
}
@Override
public CharSequence getPageTitle(int position) {
// CHANGE START HERE
if (position == current_position-1) {
return "Previous";
} else if (position == current_position+1) {
return "Next";
}
// CHANGE ENDS HERE
return TestFragmentAdapter.CONTENT[position % CONTENT.length];
}
@Override
public int getIconResId(int index) {
return ICONS[index % ICONS.length];
}
public void setCount(int count) {
if (count > 0 && count <= 10) {
mCount = count;
notifyDataSetChanged();
}
}
}
为SampleTitlesDefault这样的代码(添加OnPageChangeListener)
public class SampleTitlesDefault extends BaseSampleActivity implements ViewPager.OnPageChangeListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.simple_titles);
mAdapter = new TestFragmentAdapter(getSupportFragmentManager());
mPager = (ViewPager)findViewById(R.id.pager);
mPager.setAdapter(mAdapter);
mIndicator = (TitlePageIndicator)findViewById(R.id.indicator);
mIndicator.setViewPager(mPager);
// CHANGE START HERE
mIndicator.setOnPageChangeListener(this);
// CHANGE ENDS HERE
}
// CHANGE START HERE
@Override
public void onPageScrolled(int i, float v, int i1) {
}
@Override
public void onPageSelected(int i) {
mPager = (ViewPager)findViewById(R.id.pager);
((TestFragmentAdapter)mPager.getAdapter()).set_current_position(i);
}
@Override
public void onPageScrollStateChanged(int i) {
}
// CHANGE ENDS HERE
}
这是工作,因为我想要的,但唯一的问题是,第一标题是“上一个”,而不是“1 120”时,应用程序打开。难道我做错了什么? – ipman
您可以发布您的代码? – intrepidkarthi
我解决了这个问题。的代码,而我试图问这里之前实现这一行是造成问题。删除该行后,它就像一个魅力。谢谢你这个伟大的答案。 – ipman
您的查看寻呼机正在使用没有这些标题的适配器? – intrepidkarthi