ViewPager 结合Fragment实现一个Activity里包含多个可滑动的标签页

来源:互联网 发布:常用的mysql语句 编辑:程序博客网 时间:2024/06/03 16:32

转载出处http://blog.csdn.net/u013132758。


ViewPager 结合Fragment实现一个Activity里包含多个可滑动的标签页,每个标签页可以有独立的布局及响应。

如下所示。


我们可以借助TabLayout来实现顶部导航。Activity布局文件如下:

[html] view plain copy
 print?
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     xmlns:app="http://schemas.android.com/apk/res-auto"  
  4.     android:layout_width="match_parent"  
  5.     android:layout_height="match_parent"  
  6.     android:orientation="vertical">  
  7.   
  8. <--!自定义标题栏!-->  
  9.     <include layout="@layout/layout_ordermanagertitles" />  
  10. <--!自定义TabLayout布局!-->  
  11.     <android.support.design.widget.TabLayout  
  12.         android:id="@+id/tablayout"  
  13.         android:layout_width="match_parent"  
  14.         android:layout_height="wrap_content"  
  15.         app:tabIndicatorColor="@color/colorTitle"  
  16.         app:tabSelectedTextColor="@color/black"  
  17.         app:tabTextColor="@color/black" />  
  18. <--ViewPager 实现滑动-->  
  19.     <android.support.v4.view.ViewPager  
  20.         android:id="@+id/viewpager"  
  21.         android:layout_width="match_parent"  
  22.         android:layout_height="match_parent" />  
  23.   
  24. </LinearLayout>  

Activity  Java文件,在该文件中定义适配器,实现滑动和布局.

[java] view plain copy
 print?
  1. import android.content.Intent;  
  2. import android.os.Bundle;  
  3. import android.support.design.widget.TabLayout;  
  4. import android.support.v4.app.Fragment;  
  5. import android.support.v4.app.FragmentActivity;  
  6. import android.support.v4.app.FragmentManager;  
  7. import android.support.v4.app.FragmentPagerAdapter;  
  8. import android.support.v4.view.ViewPager;  
  9.   
  10. import com.glc.dianniuapp.R;  
  11. import com.glc.dianniuapp.fragments.FragmentDeal;  
  12. import com.glc.dianniuapp.fragments.FragmentHistory;  
  13. import com.glc.dianniuapp.fragments.FragmentRunning;  
  14.   
  15. import java.util.ArrayList;  
  16. import java.util.List;  
  17.   
  18. import butterknife.Bind;  
  19. import butterknife.ButterKnife;  
  20. import butterknife.OnClick;  
  21.   
  22. /** 
  23.  * Created by Leiqi on 2015/11/27. 
  24.  */  
  25. public class OrderManagerAcitivity extends FragmentActivity implements ViewPager.OnPageChangeListener {  
  26.   
  27.     @Bind(R.id.viewpager)  
  28.     ViewPager mViewPager;  
  29.     @Bind(R.id.tablayout)  
  30.     TabLayout mTabLayout;  
  31.     private List<Fragment> mFragments = new ArrayList<>();//标签页集合  
  32.     private MyFragmentAdapter mFragmentAdapter;//自定义适配器  
  33.     private List<String> mTitles = new ArrayList<>();//标签集合  
  34.   
  35.     @OnClick(R.id.tv_backhome)  
  36.     public void back() {  
  37.         Intent intent = new Intent(OrderManagerAcitivity.this, MainActivity.class);  
  38.         startActivity(intent);  
  39.     }  
  40.   
  41.     @Override  
  42.     protected void onCreate(Bundle savedInstanceState) {  
  43.         super.onCreate(savedInstanceState);  
  44.         setContentView(R.layout.activity_ordermanager);  
  45.         ButterKnife.bind(this);  
  46.         initView();  
  47.   
  48.     }  
  49. //初始化视图  
  50.     private void initView() {  
  51.         mTitles.add("进行中");//标签  
  52.         mTitles.add("违章管理");  
  53.         mTitles.add("历史订单");  
  54.       // 标签页  
  55.         mFragments.add(new FragmentRunning());  
  56.         mFragments.add(new FragmentHistory());  
  57.         mFragments.add(new FragmentDeal());  
  58.   
  59.   
  60.         mFragmentAdapter = new MyFragmentAdapter(getSupportFragmentManager(), mFragments, mTitles);  
  61.         mViewPager.setAdapter(mFragmentAdapter);<span style="font-family: Arial;">//ViewPager设置适配器</span>  
  62.         mViewPager.addOnPageChangeListener(this);//将ViewPager加入到该Activity中  
  63.         mTabLayout.setTabMode(TabLayout.MODE_FIXED);//设置TabLayout模式,当前为系统默认模式.  
  64.         mTabLayout.setupWithViewPager(mViewPager);//将ViewPager和Tablayout关联起来  
  65.         mTabLayout.setTabsFromPagerAdapter(mFragmentAdapter);<span style="font-family: Arial;">//TabLayout设置加适配器</span>  
  66.     }  
  67.   
  68.     @Override  
  69.     public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {  
  70.   
  71.     }  
  72.   
  73.     @Override  
  74.     public void onPageSelected(int position) {  
  75.   
  76.     }  
  77.   
  78.     @Override  
  79.     public void onPageScrollStateChanged(int state) {  
  80.   
  81.     }  
  82. //自定义适配器  
  83.     private class MyFragmentAdapter extends FragmentPagerAdapter {  
  84.         private List<String> mTitles;  
  85.         private List<Fragment> mFragments;  
  86.        
  87.         public MyFragmentAdapter(FragmentManager fm, List<Fragment> mFragments, List<String> mTitles) {  
  88.             super(fm);  
  89.             this.mFragments = mFragments;  
  90.             this.mTitles = mTitles;  
  91.         }  
  92.         @Override  
  93.         public CharSequence getPageTitle(int position) {  
  94.             return mTitles.get(position);  
  95.         }  
  96.         @Override  
  97.         public Fragment getItem(int position) {  
  98.             return mFragments.get(position);  
  99.         }  
  100.         @Override  
  101.         public int getCount() {  
  102.             return mFragments.size();  
  103.         }  
  104.     }  
  105. }  

3、标签页继承于Fragment,其java 代码和布局文件如下:(这只是一个,其余的一样根据需求自己加)

[java] view plain copy
 print?
  1. public class FragmentDeal extends Fragment {  
  2.     @Nullable  
  3.     @Override//构建视图  
  4.     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {  
  5.         return inflater.inflate(R.layout.fragment_deal,container,false);  
  6.     }  
  7. }  
[html] view plain copy
 print?
  1. 标签页面具体布局  
[html] view plain copy
 print?
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="match_parent"  
  5.     android:orientation="vertical">  
  6.   
  7.     <TextView  
  8.         android:layout_width="wrap_content"  
  9.         android:layout_height="wrap_content"  
  10.         android:text="违章处理" />  
  11.   
  12. </LinearLayout>  

0 0
原创粉丝点击