Xamarin.Android ViewPager简单使用

来源:互联网 发布:上古卷轴5精灵捏脸数据 编辑:程序博客网 时间:2024/05/22 01:48

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;        }}
到此,代码完成,运行一下,即可达到模拟器效果。




0 0
原创粉丝点击