首页 > 其他 > 详细

ViewPage相关笔记

时间:2015-07-20 23:43:45      阅读:279      评论:0      收藏:0      [点我收藏+]

只有步骤,备用

ViewPage+PagerAdapter

布局控件

在activity的布局文件中添加控件,控件标记名称为:
android.support.v4.view.ViewPager
有两个子控件:
android.support.v4.view.PagerTitleStrip(会在tab标题的上面,但是不知道怎么随着页面的左右滚动切换,所以暂时不知道如何使用这个控件)
android.support.v4.view.PagerTabStrip(每个tab页面的标题,会随着页面的左右滚动切换)

另外还有各个页面的布局文件,和平时的页面写法一样,不说了

获取控件对象并操作

在activity中使用findViewById()获取到控件的对象
上面说了因为不知道PagerTitleStrip如何自动切换,所以暂时不使用这个控件,并且PagerTabStrip也足够了
获取到PagerTabStrip的对象,使用其方法可以设置tab标题指示器的样式
获取到ViewPager的对象,主要使用其setAdapter()方法

生成各个页面

使用LayoutInflater对象的inflate()方法,加载各个页面的布局文件,获取到各个页面View类型的对象
然后把这些获取到的页面对象放到一个ArrayList<View>里面去,等下提供数据给适配器
另外,把每个页面的tab标题,放到一个ArrayList<String>里面去,也提供给适配器

适配器

写一个类继承PagerAdapter,主要重写PagerAdapter的以下方法:

//获取页面数量
@Override
public int getCount() {
    // TODO Auto-generated method stub

    return myListViews.size();
}

//这个不清楚作用,但也必须重写,重写内容如下
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
    // TODO Auto-generated method stub
    return arg0==arg1;
}

//初始化的作用吧,在这里添加页面到页面容器
//父类还有另一个重载的方法(参数不同),重写任意一个应该都可以
//myListViews是上面提到的ArrayList<View>,里面存放View类型的页面的对象
@Override
public Object instantiateItem(ViewGroup container, int position) {
    // TODO Auto-generated method stub
    container.addView(myListViews.get(position));
    return myListViews.get(position);
}

//销毁、去掉页面
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
    // TODO Auto-generated method stub
    container.removeView(myListViews.get(position));
}

//在这里添加标题数据到标题容器
//myListPagerTabs是上面提到的ArrayList<String>,里面存放的是String类型的页面标题
@Override
public CharSequence getPageTitle(int position) {
    // TODO Auto-generated method stub
    return myListPagerTabs.get(position);
}

写好适配器类之后就可以使用ViewPager对象的setAdapter()方法绑定上去了

ViewPage+FragmentPagerAdapter

基本和ViewPage+PagerAdapter一样,只是需要写几个fragment类和对应的页面的布局文件,每一个页面都是一个fragment,这些学习过fragment相关的知识就会了

不一样的地方:
1、上面的ArrayList,里面存放的东西也就是你写的fragment的对象了
2、重写父类FragmentPagerAdapter的具体方法

//只需要重写下面三个就行了
@Override
public Fragment getItem(int arg0) {
    // TODO Auto-generated method stub
    return myListViews.get(arg0);
}
@Override
public int getCount() {
    // TODO Auto-generated method stub
    return myListViews.size();
}

@Override
public CharSequence getPageTitle(int position) {
    // TODO Auto-generated method stub
    return myListTabs.get(position);
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

ViewPage相关笔记

原文:http://blog.csdn.net/listener_ri/article/details/46972547

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!