TabLayout结合ViewPager的使用

来源:互联网 发布:2015杭州旅游数据统计 编辑:程序博客网 时间:2024/05/17 08:05

点击title 和滑动viewpager  都可实现滑动

布局文件如下

<?xml version="1.0" encoding="utf-8"?><android.support.design.widget.CoordinatorLayout    xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:app="http://schemas.android.com/apk/res-auto"    android:layout_width="match_parent"    android:layout_height="match_parent">    <android.support.design.widget.AppBarLayout        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">        <android.support.design.widget.TabLayout            android:id="@+id/tab_layout"            android:layout_width="match_parent"            android:layout_height="?attr/actionBarSize"            app:tabIndicatorColor="@color/icons"/>    </android.support.design.widget.AppBarLayout>    <android.support.v4.view.ViewPager        android:id="@+id/viewpager"        android:layout_width="match_parent"        android:layout_height="wrap_content"        app:layout_behavior="@string/appbar_scrolling_view_behavior"/></android.support.design.widget.CoordinatorLayout>


java代码如下

package com.lauren.simplenews.news.widget;import android.os.Bundle;import android.support.annotation.Nullable;import android.support.design.widget.TabLayout;import android.support.v4.app.Fragment;import android.support.v4.app.FragmentManager;import android.support.v4.app.FragmentPagerAdapter;import android.support.v4.view.ViewPager;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import com.lauren.simplenews.R;import java.util.ArrayList;import java.util.List;/** * Author : lauren * Email  : lauren.liuling@gmail.com * Blog   : http://www.liuling123.com * Date   : 15/12/13 */public class NewsFragment extends Fragment {    public static final int NEWS_TYPE_TOP = 0;    public static final int NEWS_TYPE_NBA = 1;    public static final int NEWS_TYPE_CARS = 2;    public static final int NEWS_TYPE_JOKES = 3;    private TabLayout mTablayout;    private ViewPager mViewPager;    @Nullable    @Override    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {        View view = inflater.inflate(R.layout.fragment_news, null);        mTablayout = (TabLayout) view.findViewById(R.id.tab_layout);        mViewPager = (ViewPager) view.findViewById(R.id.viewpager);        mViewPager.setOffscreenPageLimit(3);        setupViewPager(mViewPager);        mTablayout.addTab(mTablayout.newTab().setText(R.string.top));        mTablayout.addTab(mTablayout.newTab().setText(R.string.nba));        mTablayout.addTab(mTablayout.newTab().setText(R.string.cars));        mTablayout.addTab(mTablayout.newTab().setText(R.string.jokes));        mTablayout.setupWithViewPager(mViewPager);        return view;    }    private void setupViewPager(ViewPager mViewPager) {        //Fragment中嵌套使用Fragment一定要使用getChildFragmentManager(),否则会有问题        MyPagerAdapter adapter = new MyPagerAdapter(getChildFragmentManager());        adapter.addFragment(NewsListFragment.newInstance(NEWS_TYPE_TOP), getString(R.string.top));        adapter.addFragment(NewsListFragment.newInstance(NEWS_TYPE_NBA), getString(R.string.nba));        adapter.addFragment(NewsListFragment.newInstance(NEWS_TYPE_CARS), getString(R.string.cars));        adapter.addFragment(NewsListFragment.newInstance(NEWS_TYPE_JOKES), getString(R.string.jokes));        mViewPager.setAdapter(adapter);    }    public static class MyPagerAdapter extends FragmentPagerAdapter {        private final List<Fragment> mFragments = new ArrayList<>();        private final List<String> mFragmentTitles = new ArrayList<>();        public MyPagerAdapter(FragmentManager fm) {            super(fm);        }        public void addFragment(Fragment fragment, String title) {            mFragments.add(fragment);            mFragmentTitles.add(title);        }        @Override        public Fragment getItem(int position) {            return mFragments.get(position);        }        @Override        public int getCount() {            return mFragments.size();        }        @Override        public CharSequence getPageTitle(int position) {            return mFragmentTitles.get(position);        }    }}

简单实用 不解释

0 0
原创粉丝点击