在第一课
学前准备:掌握ViewPage第一课http://blog.csdn.net/wei_chong_chong/article/details/50468832
为ViewPage加入标题:
PageTabStrip是PageTitleStrip的子类
PageTabStrip的使用与PageTitleStrip全然一样,
实现效果。pageTabStrip的标题文字带有Indicator。而且能够通过点击标题切换页面的显示。
使用直接把以下的第一步中的<android.support.v4.view.PagerTitleStrip换成android.support.v4.view.PagerTabStrip即可了
布局文件:
在<android.support.v4.view.ViewPager节点下加入子节点:
<android.support.v4.view.PagerTabStrip android:layout_width="fill_parent" android:layout_height="50dp" > </android.support.v4.view.PagerTabStrip>
详细例如以下:
<android.support.v4.view.ViewPager android:id="@+id/vp_viewpage" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_above="@+id/rg_tab" > <android.support.v4.view.PagerTabStrip android:layout_width="fill_parent" android:layout_height="50dp" > </android.support.v4.view.PagerTabStrip> </android.support.v4.view.ViewPager>
第二步:MainActivity中加入
private List<String> titles;
并初始化
titles = new ArrayList<String>();
titles.add("page01");
titles.add("page02");
titles.add("page03");
titles.add("page04");
并在内部类中实现方法:
@Override
public CharSequence getPageTitle(int position) {
// TODO Auto-generated method stub
return titles.get(position);
}
详细例如以下:
public class MainActivity extends Activity { private ViewPager viewpager; private List<View> children; private List<String> titles; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); viewpager = (ViewPager) findViewById(R.id.vp_viewpage); children = new ArrayList<View>(); children.add(LayoutInflater.from(this).inflate(R.layout.page01, null)); children.add(getLayoutInflater().inflate(R.layout.page02, null)); children.add(getLayoutInflater().inflate(R.layout.page03, null)); children.add(getLayoutInflater().inflate(R.layout.page04, null)); titles = new ArrayList<String>(); titles.add("page01"); titles.add("page02"); titles.add("page03"); titles.add("page04"); viewpager.setAdapter(new InnerPagerAdapter()); } public class InnerPagerAdapter extends PagerAdapter{ @Override public CharSequence getPageTitle(int position) { // TODO Auto-generated method stub return titles.get(position); } @Override public int getCount() { //获取子级布局的数量 return children.size();//返回viewpage容器中子级布局的个数, } @Override public boolean isViewFromObject(View view, Object object) { // 推断某个View对象是否为当前被加入到ViewPager容器中的对象 return view == object; } //以下两个方法是PageAdapter中必须实现的非抽象方法 @Override public Object instantiateItem(ViewGroup container, int position) { // 实例化ViewPager容器中指定的position位置须要显示的View对象 View view = children.get(position); container.addView(view); return view; } @Override public void destroyItem(ViewGroup container, int position, Object object) { //在ViewPager中移除指定的position位置的View对象 container.removeView(children.get(position)); } } }
时间: 2024-10-12 12:38:54