android fragment与ViewPager

来源:互联网 发布:单身狗 知乎 编辑:程序博客网 时间:2024/05/17 01:40

本篇文章,详细讲一下fragment 与ViewPager的结合。

fragment将在未来占据很大的地位,会被更多的利用,掌握fragment 与ViewPager的结合是必不可少的一项技能。

1.使用时,首先在布局文件里

 <LinearLayout 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:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    android:paddingBottom="@dimen/activity_vertical_margin"    android:background="#fff"    tools:context="text.chen.example.com.test.ViewPagerActivity">    <android.support.v4.view.ViewPager        android:id="@+id/view_pager"        android:layout_height="wrap_content"        android:layout_width="wrap_content"        android:layout_gravity="center"><!--是界面上面的tab,显示当前页面-->        <android.support.v4.view.ViewPagerTabStrip            android:id="@+id/view_tab"            android:layout_height="wrap_content"            android:layout_width="wrap_content"            android:layout_gravity="center">        </android.support.v4.view.ViewPagerTabStrip>        <!--二选一,因为顶部的tab与底部的tab 只可以同时利用一个-->        <!--<android.support.v4.view.PagerTitleStrip-->        <!--android:id="@+id/title"-->        <!--android:layout_height="wrap_content"-->        <!--android:layout_width="wrap_content"-->        <!--android:layout_gravity = "bottom"-->        <!-->-->        <!--</android.support.v4.view.PagerTitleStrip>-->    </android.support.v4.view.ViewPager></LinearLayout>

2.本文不是讲解代码的,而是讲方法的。

1.当fragment里面的内容较少时,可以利用加载view 的方法来进行:

在java里面添加:

 private List<View> viewList;//在onCreate方法里面添加 viewList = new ArrayList<View>();        View view1 = View.inflate(this, R.layout.view1, null);        View view2 = View.inflate(this, R.layout.view2, null);        View view3 = View.inflate(this, R.layout.view3, null);        View view4 = View.inflate(this, R.layout.view4, null);        viewList.add(view1);        viewList.add(view2);        viewList.add(view3);        viewList.add(view4);
 再为tab添加一些属性和标题:

   <span style="white-space:pre"></span>private PagerTabStrip tab;    <span style="white-space:pre"></span>private List<String> titleList;<span style="white-space:pre"></span>//为ViewPager页卡设置标题        titleList = new ArrayList<String>();        titleList.add("first");        titleList.add("second");        titleList.add("third");        titleList.add("four");        //为PagerTabStrip设置一些属性        tab = (PagerTabStrip) findViewById(R.id.view_tab);        tab.setBackgroundColor(Color.YELLOW);//tab字体颜色        tab.setTextColor(Color.RED);//字体颜色        tab.setDrawFullUnderline(false);//横线消失        tab.setTabIndicatorColor(Color.GREEN);//指示器颜色
再进行ViewPager的初始化

<span style="white-space:pre"></span>viewPager = (ViewPager) findViewById(R.id.view_pager);
再为其创建PagerAdapter适配器

最好为新建一个类继承与FragmentPagerAdapter,我在做这里创建的为:MyFragmentPagerAdapter

<span style="white-space:pre">/**         * 创建PagerAdapter适配器         */</span>
<span style="white-space:pre"></span>MyPagerAdapter myPagerAdapter = new MyPagerAdapter(viewList, titleList);        viewPager.setAdapter(myPagerAdapter);
这样即可完成。

2.当fragment里面函数逻辑较为复杂时,就需要传fragment进行

<span style="white-space:pre"></span>private List<Fragment> fragmentList;        /**         * 通过Fragment作为VIewPAger的数据源         *         */        fragmentList = new ArrayList<Fragment>();        fragmentList.add(new Fragment1());        fragmentList.add(new Fragment2()) ;        fragmentList.add(new Fragment3()) ;        fragmentList.add(new Fragment4());
此时的适配器:

<span style="white-space:pre"></span>MyFragmentPagerAdapter adapter = new MyFragmentPagerAdapter(getSupportFragmentManager(),fragmentList,titleList);        viewPager.setAdapter(adapter);

最后这个是我的adapter

package text.chen.example.com.test.adapter;import android.support.v4.app.Fragment;import android.support.v4.app.FragmentManager;import android.support.v4.app.FragmentPagerAdapter;import android.view.ViewGroup;import java.util.List;/** * Created by chen on 15-2-5. */public class MyFragmentPagerAdapter extends FragmentPagerAdapter {    private List<Fragment> fragmentList;    private List<String> titleList;//构造函数的参数依据activity里面需要传的参数来设置,例如:<pre name="code" class="java">//fragmentList,在第一种传view时不需要:
 public MyFragmentPagerAdapter(FragmentManager fm, List<Fragment> fragmentList, List<String> titleList) { super(fm); this.fragmentList = fragmentList; this.titleList = titleList; } @Override public Fragment getItem(int i) { return fragmentList.get(i); } @Override public CharSequence getPageTitle(int position) { return titleList.get(position); } @Override public int getCount() { return fragmentList.size(); } @Override public Object instantiateItem(ViewGroup container, int position) { return super.instantiateItem(container, position); }}


最后希望大家有所帮助!!!一点一点码出来也是蛮拼的大笑大笑大笑

0 0
原创粉丝点击