Fragment和TabLayout使用

原创 2018年04月15日 23:38:19

效果图:




一、使用Tablayout,首先需要在项目中加入Design包

dependencies {
  compile 'com.android.support:design:24.1.1'
}

二、在activity_main.xml布局文件中

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:app="http://schemas.android.com/apk/res-auto"
  xmlns:tools="http://schemas.android.com/tools"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:orientation="vertical"
  tools:context="zhengliang.com.tablayout.MainActivity">
  <android.support.design.widget.TabLayout
    android:id="@+id/tab"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/colorPrimary"
    >
  </android.support.design.widget.TabLayout>
  <android.support.v4.view.ViewPager
    android:id="@+id/pager"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1" />
</LinearLayout>

里面一个Tablayout和一个ViewPager就行了

三、MainAndroid里java代码

public class ZhiBoFragment extends BaseFragment {
    private HomePersenter mshouYFragment;

    private ImageView image_my;
    private TabLayout tab_layout;
    private ViewPager vp;
    private View view;
    private List<String> list;
    private List<Fragment> fragmentList;

    @Override
    protected void loadData() {
        mshouYFragment = new HomePersenter(Urls.BASEURL4, this,PandaZhibBt.class);
        mshouYFragment.start();
    }


    protected void initView(View view) {
        image_my = (ImageView) view.findViewById(R.id.image_my);
        tab_layout = (TabLayout) view.findViewById(R.id.tab_layout);
        vp = (ViewPager) view.findViewById(R.id.vp);
        setUserVisibleHint(true);
        image_my.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(getActivity(), PersonalActivity.class);
                startActivity(intent);
            }
        });


    }

    @Override
    protected int getFragmentLayoutId() {
        return R.layout.fragment_zhi_bo;

    }

    @Override
    public void onSucess(Object o) {
            if (o instanceof PandaZhibBt){

                list = new ArrayList<>();
                fragmentList = new ArrayList<>();
                List<PandaZhibBt.TablistBean> tablist = ((PandaZhibBt) o).getTablist();

                for (int i = 0; i < tablist.size(); i++) {
                    list.add(tablist.get(i).getTitle());
                }
                fragmentList.add(new NewFragment());
                for (int i = 0; i < tablist.size() - 1; i++) {
                    fragmentList.add(new FuYonFragment(Urls.BASEURLS[i]));
                }

                MyPandaZhB myPandaZhB = new MyPandaZhB(getChildFragmentManager(), list, fragmentList);
                tab_layout.setupWithViewPager(vp);
                vp.setAdapter(myPandaZhB);
            }
    }

    @Override
    public void onFaile(String msg) {

    }

    @Override
    public void setPresenter(HomePersenter presenter) {
        this.mshouYFragment=presenter;
    }
}

我们还需要写一个适配器让ViewPager和TabLayout关联

public class MyAdapterFreg extends FragmentPagerAdapter {
    private List<String> list;
    private List<Fragment> fragmentList;

    public MyAdapterFreg(FragmentManager fm, List<String> list, List<Fragment> fragmentList) {
        super(fm);
        this.list = list;
        this.fragmentList = fragmentList;
    }

    public Fragment getItem(int position) {
        return fragmentList.get(position);
    }

    @Override
    public int getCount() {
        return fragmentList.size();
    }

    @Nullable
    @Override
    public CharSequence getPageTitle(int position) {
        return list.get(position);
    }
}

思考微软

不知道这篇文章能不能发到文档中心,因为他似乎和技术无关,但是我觉得,他还是有一定作用的。几年来思考,打了4个多小时的字,总不能帖到灌水乐园吧。  正文:第一次去参加产品发布会,就有幸能够去window...
  • daiguan
  • daiguan
  • 2001-12-03 08:16:00
  • 1593

Fragment中套用Tablayout,使用ChildFragment

首先我们要添加上常用的一些依赖: compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5' compile '...
  • zhangheng7
  • zhangheng7
  • 2017-10-20 13:27:31
  • 188

TabLayout简单使用以及+Fragment配合

我使用的 android studio进行开发的,所以引用TabLayout很简单,只要在build.gradle中加入compile ‘com.android.support:design:22.2...
  • w630886916
  • w630886916
  • 2017-09-29 16:31:22
  • 391

在Fragment中使用TabLayout,TabLayout不能正常显示的问题。

在Fragment中使用TabLayout,TabLayout不能正常显示的问题。 方法一: mTabLayout.post(new Runnable() { @Override public voi...
  • wei53881
  • wei53881
  • 2016-02-18 15:51:37
  • 648

ViewPager+Fragment+TabLayout联合使用

一、主页面布局:添加Tablayout和ViewPager两个控件 (PS:使用前要先添加支持库: (1)ViewPager: compile 'com.android.support:su...
  • csdnloginname
  • csdnloginname
  • 2016-07-25 23:48:01
  • 3338

TabLayout+Fragment+ViewPager联合使用

首先是activity_main.xml文件,定义主要的界面,因为我用了FloatingActionBar,所以最外层用的是CoordinatorLayout,在这里面嵌入一个LinearLayout...
  • u013511711
  • u013511711
  • 2016-03-09 18:11:04
  • 3519

关于Fragment嵌套Fragment并且使用tablayout的错误

今天碰到了这样一个问题,找了很多资料都没解决,记录一下,留给有缘人,希望你们不用花这么多时间是这样的解决的:我尝试了在activity中使用tablayout+viewpager 并且使用Fragme...
  • github_36617621
  • github_36617621
  • 2016-12-05 03:31:09
  • 396

TabLayout与ViewPager和Fragment、FragmentPagerAdapter的配合使用

记录用过的东西 防止遗忘。 注意要把垂直设置好,因为是linearLayout布局,漏掉了就不能滑动了 Fragment的布局文件,3个一样的:layout1.xml 3个Fragment的文...
  • muziLL
  • muziLL
  • 2016-12-13 17:07:39
  • 1920

Android 在Fragment中使用TabLayout时标题不显示问题

app中四个Tab页是Fragment,使用FragmentTransaction方式进行显示和隐藏,各个Fragment之间不能左右滑动切换,只能点击,类似微信。好吧,现在问题来了,,,, 我在一个...
  • wblyuyang
  • wblyuyang
  • 2016-01-12 10:05:07
  • 5612

Design下的TabLayout和Fragment和ViewPager联动的简单使用

首先介绍下TabLayout,实际开发中我们经常需要用到Viewpager,而已需要跟头部的Tab实现联动效果。而Design的出现,给我们一种更加方便的UI框架去实现这种效果。今天就介绍它与View...
  • Tracy1024
  • Tracy1024
  • 2016-08-25 22:06:32
  • 1962
收藏助手
不良信息举报
您举报文章:Fragment和TabLayout使用
举报原因:
原因补充:

(最多只允许输入30个字)