ViewPager+Fragment实现左右滑动页

来源:互联网 发布:淘宝外贸原单店铺推荐 编辑:程序博客网 时间:2024/05/17 01:41


     

             思路:

                       每一个Tab里面的内容都放到一个fragment里面,然后再每个fragment里面处理具体的业务逻辑,在主页面上,像加入view那样加入fragment.


             首先来看fragment里面代码:


 

/** * Created by LiuHuiChao on 2015/11/16. */public class ViewPagerFragment1 extends Fragment {    private String   text;    private TextView tv = null;    public ViewPagerFragment1(){}    @SuppressLint("ValidFragment")    public ViewPagerFragment1(String text){        super();        this.text = text;    }    /**     * 覆盖此函数,先通过inflater inflate函数得到view最后返回     */    @Override    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {        View v = inflater.inflate(R.layout.tab1, container, false);        tv = (TextView)v.findViewById(R.id.tv);        tv.setText(text);        return v;    }}


      fragment对应的layout:


<?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">    <TextView        android:gravity="center"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:id="@+id/tv"        android:textSize="20dp"        android:layout_gravity="center"        android:layout_weight="1"        android:text="tab1" /></LinearLayout>


      之后是主页:




/** * Created by LiuHuiChao on 2015/11/16. */public class ViewPagerFragment extends FragmentActivity {    /** 页面list **/    List<Fragment> fragmentList = new ArrayList<Fragment>();    /** 页面title list **/    List<String> titleList  = new ArrayList<String>();    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.content_main3);        ViewPager pager=(ViewPager)findViewById(R.id.viewPagerThree);        fragmentList.add(new ViewPagerFragment1("页面1"));        fragmentList.add(new ViewPagerFragment1("页面2"));        fragmentList.add(new ViewPagerFragment1("页面3"));        titleList.add("title 1 ");        titleList.add("title 2 ");        titleList.add("title 3 ");        pager.setAdapter(new TestFragmentPagerAdapter(getSupportFragmentManager(), fragmentList, titleList));    }    class TestFragmentPagerAdapter extends FragmentPagerAdapter{        private List<Fragment> fragmentList;        private  List<String> titleList;        public TestFragmentPagerAdapter(FragmentManager fm,List<Fragment> fragmentList,List<String> titleList) {            super(fm);            this.fragmentList=fragmentList;            this.titleList=titleList;        }        @Override        public CharSequence getPageTitle(int position) {            //return (titleList.size() > position) ? titleList.get(position) : "";            return titleList.get(position);        }        @Override        public Fragment getItem(int position) {            return (fragmentList == null || fragmentList.size() == 0) ? null : fragmentList.get(position);        }        @Override        public int getCount() {            return fragmentList == null ? 0 : fragmentList.size();        }    }}


           主页对应layout:


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical" >    <android.support.v4.view.ViewPager        android:id="@+id/viewPagerThree"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_gravity="center" >        <android.support.v4.view.PagerTabStrip            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_gravity="top" />    </android.support.v4.view.ViewPager></LinearLayout>


     run了一下,发现以前自己想改掉的bug还在,明天再改吧,我的鱿鱼丝吃完了,而且我 也困了。感觉用fragment做的方式更好,感谢百度!明天收拾那两个小bug。晚安,亲们!








4 0