TabLayout实现动态加载Fragment

来源:互联网 发布:小米wifi软件下载 编辑:程序博客网 时间:2024/05/29 12:30

  首先先给大家展现一下效果图


不过在写TabLayout的时候不要忘记导依赖

compile 'com.android.support:design:26.0.0-alpha1'
 下面开始写一下我们TabLayout和Viewpager的布局

<?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"    android:orientation="vertical"    >    <TextView        android:layout_width="match_parent"        android:layout_height="50dp"        android:gravity="center"        android:background="#2B4983"        android:text="资讯" />    <android.support.design.widget.TabLayout        android:id="@+id/zx_tl"        android:layout_width="match_parent"        android:layout_height="50dp"        ></android.support.design.widget.TabLayout>    <android.support.v4.view.ViewPager        android:id="@+id/zx_vp"        android:layout_width="match_parent"        android:layout_height="match_parent"        /></LinearLayout>

我们找到TabLayout和Viewpager的控件开始设置适配器等等

public class FragmentZx extends Fragment{    private TabLayout mTabLayout;    private ViewPager mViewPager;    private LayoutInflater mInflater;    private List<String> mTitleList = new ArrayList<>();//页卡标题集合    private View view1, view2, view3, view4, view5;//页卡视图    private List<View> mViewList = new ArrayList<>();//页卡视图集合    private List<String> listTitles;    private List<Fragment> fragments;    private List<TextView> listTextViews;    private ShuPresenter presenter;    @Nullable    @Override    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {          View view = View.inflate(getActivity(), R.layout.frag_zx,null);        //找控件        mTabLayout = view.findViewById(R.id.zx_tl);        mViewPager = view.findViewById(R.id.zx_vp);        initData();        return view;    }    private void initData() {        listTitles = new ArrayList<>();        fragments = new ArrayList<>();        listTextViews = new ArrayList<>();        listTitles.add("沪深");        listTitles.add("板块");        listTitles.add("指数");        listTitles.add("港股");        listTitles.add("新三板");        listTitles.add("商品");        listTitles.add("更多");        for (int i = 0; i < listTitles.size(); i++) {                    ContentFragment fragment = ContentFragment.newInstance(listTitles.get(i));                      fragments.add(fragment);                  }             //mTabLayout.setTabMode(TabLayout.SCROLL_AXIS_HORIZONTAL);//设置tab模式,当前为系统默认模式       for (int i=0;i<listTitles.size();i++){                    mTabLayout.addTab(mTabLayout.newTab().setText(listTitles.get(i)));//添加tab选项                 }             FragmentPagerAdapter mAdapter = new FragmentPagerAdapter(getFragmentManager()) {                     @Override                         public Fragment getItem(int position) {                               return fragments.get(position);                          }                        @Override                      public int getCount() {                            return fragments.size();                         }                   //ViewPager与TabLayout绑定后,这里获取到PageTitle就是Tab的Text                      @Override                      public CharSequence getPageTitle(int position) {                          return listTitles.get(position);                        }            };             mViewPager.setAdapter(mAdapter);                mTabLayout.setupWithViewPager(mViewPager);//将TabLayout和ViewPager关联起来。                mTabLayout.setTabsFromPagerAdapter(mAdapter);//给Tabs设置适配器    }}
写一个动态的Fragment类

public class ContentFragment extends Fragment {    private View view;    private static final String KEY = "title";    private TextView tvContent;    @Nullable    @Override    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {        View view = View.inflate(getActivity(), R.layout.contentfragment,null);        tvContent =  view.findViewById(R.id.tv_content);        String string = getArguments().getString(KEY);                 tvContent.setText(string);                 tvContent.setTextColor(Color.BLUE);                 tvContent.setTextSize(30);        return view;    }    /**      * fragment静态传值      */       public static ContentFragment newInstance(String str){            ContentFragment fragment = new ContentFragment();             Bundle bundle = new Bundle();             bundle.putString(KEY,str);            fragment.setArguments(bundle);            return fragment;        }}
在写ContentFragment对应的xml

<?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:id="@+id/tv_content"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:gravity="center"        /></LinearLayout>


原创粉丝点击