Fragment和ViewPager的结合——仿制微信界面6.0<二>

【概述】
在微信中,拖动就可以转换视图。这是如何实现的呢?
其实这并不难,用到ViewPager和Fragment的结合就可以了。
今天就将这一部分的代码敲出。

【在xml中加入】
在需要的地方加入ViewPager标签,这里将layout_height设置为0dp,并且将weight设置为1。这样在后来再在底部添加底部图标时,ViewPager都将占据剩余的空间。

<android.support.v4.view.ViewPager
     android:id="@+id/id_viewpager"
     android:layout_width="match_parent"
     android:layout_height="0dp"
     android:layout_weight="1">   
 </android.support.v4.view.ViewPager>

【设置Fragment】
Fragment是我们要现实内容的主要容器(它将成为被ViewPager调用的对象)。
新建一个类TabFragment

//注意这里会导入Fragment的包。但是要注意这个Fragment的包是存在于v4而不是app中的。
public class TabFragment extends Fragment {
    private static final String  TAG="TabFragment";
    private String mTitleString="Default";
    public static String TITLE="title";
    @Override
    public View onCreateView(LayoutInflater inflater,
            @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

        if(getArguments()!=null){
            mTitleString=getArguments().getString(TITLE);
        }
        TextView tv=new TextView(getActivity());
        tv.setTextSize(30);
        tv.setBackgroundColor(Color.WHITE);
        tv.setText(mTitleString);
        Log.d(TAG,(String) tv.getText());
        return tv;//默认返回一个textView就可以了 不用再编写别的xml了

    }

}

【在MainActivity中对新建一个TabFragment的List并且进行初始化】

//这些代码在原代码并非是连贯的
//用来初始化的药渣
private String[] mTitles = new String[]
    { "First Fragment !", "Second Fragment !", "Third Fragment !","Fourth Fragment !" };

//TabFragment的List
private List<TabFragment> mTabs=new ArrayList<TabFragment>();

//设置初始化函数
private void init(){
    for(String title:mTitles){
    //设置一个bundle用来承载数据
    Bundle bundle=new Bundle();
    bundle.putString(TabFragment.TITLE,title);
    //初始化一个新的TabFragment,并且设置参数为bundle
    TabFragment fragment=new TabFragment();
    fragment.setArguments(bundle);
    //添加入List中去
    mTabs.add(fragment);
    }
}

【获取ViewPager并且为其设置适配器】
既然已经有了内容,接下来就应该为这些TabFragment安置一个家了————这当然就是我们刚才所设置的ViewPager了!

//以下代码并不连贯
//获取到ViewPager
private ViewPager mViewPager;
mViewPager=(ViewPager)findViewById(R.id.id_viewpager);

//设置一个适配器,为ViewPager供上电!
private FragmentPagerAdapter mAdapter;
mAdapter = new FragmentPagerAdapter(getSupportFragmentManager()) {
//注意这个函数的参数应该是一个FragmentManager,这就需要我们的Activity继承的是FragmentActivity;

            @Override
            public int getCount() {
                // TODO Auto-generated method stub
                return mTabs.size();
            }

            @Override
            public Fragment getItem(int arg0) {
                return mTabs.get(arg0);
            }
        };
        mViewPager.setAdapter(mAdapter);


【这样就完成了】
我们看到Fragment和ViewPager的结合,其实只是在ViewPager中使用了fragment返回的view来填充
两个关键的结点分别是ViewPager的适配器FragmentPagerAdapter的方法getItem()和Fragment中的方法onCreateView()

版权声明:本文为博主原创文章,转载请标明出处。

转载于:https://www.cnblogs.com/fridge/p/4861937.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值