ViewPager的使用
来源:互联网 发布:mac editplus 编辑:程序博客网 时间:2024/06/14 13:21
- ViewPager直接继承了ViewGroup,是一个容器类,既然是容器类,就可以存放视图View等等。
- 使用ViewPager的时候要用适配器来提供数据,一般都用PagerAdapter适配器。
- ViewPager经常和Fragment一起使用,并且提供了专门的FragmentPagerAdapter和FragmentStatePagerAdapter类供Fragment中的ViewPager使用。
- 在写ViewPager的时候一般也要有PagerTabStrip和PagerTitleStrip,两个只需其一即可。是标题的作用。
创建适配器的时候,需要重写以下四个方法:
- instantiateItem(ViewGroup, int):初始化视图。
- destroyItem(ViewGroup, int, Object):当翻页的时候销毁一个视图。
- getCount():取得当前容器中内容的数量。
- isViewFromObject(View, Object):true if view is associated with the key object object。
看一下模拟效果:
具体代码:
tab1.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:id="@+id/tv1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:text="Hello Android" android:textSize="25sp" /></LinearLayout>
tab2.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:id="@+id/tv2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:text="娱乐" android:textSize="25sp" /></LinearLayout>
tab3.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <ProgressBar android:id="@+id/progressBar1" style="?android:attr/progressBarStyleLarge" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center"/></LinearLayout>
activity_main.xml
<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" > <android.support.v4.view.ViewPager android:id="@+id/viewPager" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="#EEEEEE" android:gravity="center" > <android.support.v4.view.PagerTitleStrip android:id="@+id/pagerTitleStrip" android:layout_width="match_parent" android:layout_height="70dp" android:background="#00897B" android:gravity="center" > </android.support.v4.view.PagerTitleStrip> </android.support.v4.view.ViewPager></RelativeLayout>
MainActivity.java
package com.example.viewpagertest;import java.util.ArrayList;import java.util.List;import android.app.Activity;import android.os.Bundle;import android.support.v4.view.PagerAdapter;import android.support.v4.view.PagerTitleStrip;import android.support.v4.view.ViewPager;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.view.Window;public class MainActivity extends Activity { private ViewPager pager; private PagerTitleStrip titleStrip; private List<View> list; private List<String> title; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_main); pager = (ViewPager) findViewById(R.id.viewPager); titleStrip = (PagerTitleStrip) findViewById(R.id.pagerTitleStrip); // 动态加载布局 View view1 = LayoutInflater.from(MainActivity.this).inflate( R.layout.tab1, null); View view2 = LayoutInflater.from(MainActivity.this).inflate( R.layout.tab2, null); View view3 = LayoutInflater.from(MainActivity.this).inflate( R.layout.tab3, null); list = new ArrayList<View>(); list.add(view1);// 将布局放到List的容器中 list.add(view2); list.add(view3); title = new ArrayList<String>();// 将标题信息放在容器中 title.add("新闻"); title.add("娱乐"); title.add("财经"); // 创建PagerAdapter pager.setAdapter(new MyAdapter()); } class MyAdapter extends PagerAdapter { @Override public boolean isViewFromObject(View arg0, Object arg1) { return arg0 == arg1;// 官方这样写的 } @Override public Object instantiateItem(ViewGroup container, int position) { ((ViewPager) container).addView(list.get(position)); return list.get(position); }; @Override public void destroyItem(ViewGroup container, int position, Object object) { ((ViewPager) container).removeView(list.get(position)); }; @Override public int getCount() { return list.size(); } @Override public int getItemPosition(Object object) { return super.getItemPosition(object); } @Override public CharSequence getPageTitle(int position) { return title.get(position); } };}
0 0
- ViewPager中ViewPager的使用
- ViewPager 的使用
- viewpager的使用
- ViewPager的使用
- ViewPager的使用
- ViewPager的简单使用
- viewpager的简单使用
- ViewPager的使用
- ViewPager 的使用
- viewpager的使用
- viewpager的简单使用
- ViewPager的简单使用
- viewpager的使用
- android viewpager的使用
- ViewPager的简单使用
- ViewPager的使用
- viewpager+viewpagerindicator的使用
- ViewPager的使用(上)
- TLB工作原理
- yii2 时间控件用法
- 10008---Maven简介(一)
- Shiro+Spring MVC整合
- 基于C++全局变量的声明与定义的详解
- ViewPager的使用
- Linux kernel的 Makefile和Kconfig以及Make menuconfig的关系
- 使用Initramfs挂载根文件系统,编译过程multiple target patterns(多个目标匹配)问题的解决
- 全栈介绍
- 以SpringMVC框架为中心疯狂扩展-09、添加Redis依赖
- POJ 3295 Tautology 永真式,栈的简单模拟
- Postgresql去除重复数据的方法
- 【HDU5734 2016 Multi-University Training Contest 2A】【公式代入推导】Acperience n维向量各有加减最小模长
- AppBarLayout源码解读