Viewpaper的使用(V4 支持包中的类)
一、
功能:
1.实现页面之间的滑动展示
基本知识点:
1.Viewpaper直接继承了ViewGroup,所以他是一个容器类
2.Viewpaper需要一个ViewAdapter为其提供数据
3.Viewpaper经常和Fragment一起使用
二、
另外两个辅助类:(这两个类必须为Viewpaper的子类)
功能:
为ViewPaper添加标题
区别:
1.PagerTitleStrip只是单纯的显示标题,不能与用户产生交互
2.PagerTabStrip不仅可以显示标题,用户点按还可以跳到指定的界面。
1.PagerTitleStrip类
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.testviewpage_2.MainActivity" >
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="wrap_content"
android:layout_height="200dip"
android:layout_gravity="center">
<android.support.v4.view.PagerTitleStrip
android:id="@+id/pagertitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="top"
/>
</android.support.v4.view.ViewPager>
</RelativeLayout>
2.PagerTabStrip类
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.testviewpage_2.MainActivity" >
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="wrap_content"
android:layout_height="200dip"
android:layout_gravity="center">
<android.support.v4.view.PagerTabStrip
android:id="@+id/pagertitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="top"
/>
</android.support.v4.view.ViewPager>
</RelativeLayout>
三、适配器的简单写法
public class MainActivity extends Activity {
private View view1,view2,view3;
private ViewPager viewPager;
private List<View> list;
private List<String> list_title;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//找到viewpaper
viewPager=(ViewPager) findViewById(R.id.v4_pager);
//引入3个布局
LayoutInflater inflate=LayoutInflater.from(MainActivity.this);
view1=inflate.inflate(R.layout.layout1, null);
view2=inflate.inflate(R.layout.layout2, null);
view3=inflate.inflate(R.layout.layout3, null);
//把3个布局装到集合当中
list=new ArrayList<View>();
list.add(view1);
list.add(view2);
list.add(view3);
//添加标题
list_title=new ArrayList<String>();
list_title.add("第一个");
list_title.add("第二个");
list_title.add("第三个");
//用适配器,为viewpager,配置数据
PagerAdapter pageradp=new PagerAdapter() {
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
// TODO Auto-generated method stub
//根据key去找到view,判断view是否与arg0相同
return arg0 == list.get((int)Integer.parseInt(arg1.toString()));
//return false;
}
//返回可滑动Viewpager的数量
@Override
public int getCount() {
// TODO Auto-generated method stub
return list.size();
//return 0;
}
//从container中的指定位置(position)删除View
@Override
public void destroyItem(ViewGroup container, int position,
Object object) {
// TODO Auto-generated method stub
//super.destroyItem(container, position, object);
container.removeView(list.get(position));
}
//instantiateItem():做了两件事,第一:将当前视图添加到container中,第二:返回当前View
@Override
public Object instantiateItem(ViewGroup container, int position) {
// TODO Auto-generated method stub
//把view添加进去
container.addView(list.get(position));
//把当前新增试图的position,当做view的key传出去
return position;
}
//为PagerTabStrip的提供标题数据源
@Override
public CharSequence getPageTitle(int position) {
// TODO Auto-generated method stub
return list_title.get(position);
}
};
viewPager.setAdapter(pageradp);
}
}
问题:
如果出现滑动到最后一个布局崩溃的情况,请把super.destroyItem(container, position, object);
删除掉!!如果出现导入的布局不是Fragment等错误,去核查,看一下自己导入的事v4包的fragment 还是 Android.app.Fragment 二者要一致
9624

被折叠的 条评论
为什么被折叠?



