发布:2017/9/30 1:09:36作者:管理员 来源:本站 浏览次数:1569
ViewPager的简单介绍
ViewPager就是一个页面切换的组件而已,我们可以往里面填多个view,然后
我们左右滑动切换不同的view而已,和ListView一样,我们也需要一个Adapter(适配器),将要显示的View和我们的ViewPager进行绑定,而ViewPager有特定的Adapter——PagerAdapter!
另外,Google官方是建议我们使用Fragment来填充ViewPager的,这样可以更加方便的生成
每个Page以及管理每个Page的生命周期!当然也给我们提供了两个不同的Adapter!分别是:
FragmentPageAdapter和FragmentStatePagerAdapter,前者适用于页面较少的情况,后者适用于页面较多的情况
先上效果图
实现这个效果呢,并不难
首先要有Xamarin.Android.Support.V4这个dll文件,没有的可以通过这种方式下载
效果图如下:
第一步:先建立三个.axml文件
界面布局如下:
<?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"
android:gravity="center"
android:background="#FF6666">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="第一个Page" />
</LinearLayout>
其余连个界面背景颜色改变一下即可
第二步:建立ViewPager的适配器——PagerAdapter
internal class ViewPagerAdapter : PagerAdapter
{
private readonly List<View> viewLists; //定义一个view的集合,赋给ViewPager,viewPager和listview其实是一样的
public override bool IsViewFromObject(View view, Object objectValue)
{
return view == objectValue; //?判断view和对应的objectValue等不等,对,就是酱纸。。。。
}
public ViewPagerAdapter(List<View> _viewList)
{
viewLists = _viewList;
}
//获得ViewPage里面有多少个Count
public override int Count
{
get { return viewLists.Count(); }
}
public override Java.Lang.Object InstantiateItem(ViewGroup arg0, int arg1)
{
arg0.AddView(viewLists[arg1]);
return viewLists[arg1];
}
public override void DestroyItem(ViewGroup arg0, int arg1, Java.Lang.Object arg2)
{
arg0.RemoveView(viewLists[arg1]);
}
在MainActivity里面
界面代码:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<TextView
android:gravity="center"
android:layout_width="match_parent"
android:layout_height="40dp"
android:text="简单的ViewPager使用"
android:background="#FCBC12" />
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center" />
</LinearLayout>
后台代码:
[Activity(Label = "Material", MainLauncher = true, Icon = "@drawable/icon")]
public class MainActivity : Activity
{
private int count = 1;
//定义相关变量
private View v1, v2, v3;
private ViewPager vPager;
private List<View> aList;
private ViewPagerAdapter mAdapter;
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.Main);
vPager = FindViewById<ViewPager>(Resource.Id.viewpager);
//动态加载三个View
var li = LayoutInflater.From(this);
v1 = li.Inflate(Resource.Layout.Page1, null);
v2 = li.Inflate(Resource.Layout.Page2, null);
v3 = li.Inflate(Resource.Layout.Page3, null);
aList = new List<View>();
aList.Add(v1);
aList.Add(v2);
aList.Add(v3);
mAdapter = new ViewPagerAdapter(aList);
vPager.Adapter = mAdapter;
}
}
到此,代码完成,运行一下,即可达到模拟器效果。