android fragment与ViewPager

本篇文章,详细讲一下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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值