文档章节

ViewPager + Fragment + TabLayout

 山里来的鱼
发布于 2016/07/26 21:08
字数 293
阅读 49
收藏 0

ViewPager + Fragment

layout

activity 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"
    android:orientation="vertical">
    <android.support.v4.view.ViewPager
        android:id="@+id/viewPager"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1.0"
        android:scrollbars="none" />

</LinearLayout>

fragment layout

添加多个类似的

<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="wrap_content"
        android:layout_height="wrap_content"
        android:text="Frag01"
        android:layout_marginTop="100dp"
        android:layout_gravity="center"
        android:textSize="30sp"/>

</LinearLayout>

Fragment

添加多个Fragment

public class Fragment01 extends Fragment {
    public Fragment01(){

    }

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment01, container, false);
        return rootView;
    }
}

Adapter

public class SectionsPagerAdapter extends FragmentPagerAdapter {
 
        ArrayList<Fragment> fragments = new ArrayList<Fragment>();
        public SectionsPagerAdapter(FragmentManager fm) {
            super(fm);
            //初始化添加Fragment到fragments
            Fragment fragment01 = new Fragment01();
            fragments.add(fragment01);
            //添加其他Fragment
        }

        @Override
        public Fragment getItem(int position) {
            return fragments.get(position);
        }

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

Activity.onCreate

mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());

// Set up the ViewPager with the sections adapter.
mViewPager = (ViewPager) findViewById(R.id.viewPager);
mViewPager.setAdapter(mSectionsPagerAdapter);

其中

SectionsPagerAdapter mSectionsPagerAdapter;
ViewPager mViewPager;

截止到上面,可以实现滑动切换Fragment,但是并没有Tab标签,因此,需要添加Tablayout

TabLayout

layout

添加

<android.support.design.widget.TabLayout
            android:id="@+id/tabLayout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />

Activity.onCreate

TabLayout tabLayout = (TabLayout) findViewById(R.id.tabLayout);
tabLayout.addTab(tabLayout.newTab().setText("Fragment01"));
//添加其他Tab
mViewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
       @Override
       public void onTabSelected(TabLayout.Tab tab) {
              mViewPager.setCurrentItem(tab.getPosition());
       }

       @Override
       public void onTabUnselected(TabLayout.Tab tab) {

       }

       @Override
       public void onTabReselected(TabLayout.Tab tab) {

       }
});

 

© 著作权归作者所有

共有 人打赏支持
粉丝 7
博文 156
码字总数 28874
作品 0
珠海
程序员
私信 提问
TabLayout实现顶部导航(一)

前言 顶部导航栏,是我们在开发中比较常见的一种显示布局,它的实现可以有多种方式,那么今天我们就来讲讲 TabLayout 对它的实现。 此篇文章参考以下链接 TabLayout轻松实现仿今日头条顶部t...

奔跑的佩恩
01/07
0
0
viewpager里如何实现webview的回退功能?

Android studio 里用v4包里的viewPager和design包下的tabLayout实现可滑动的不同页面(viewpager里嵌套了fragment),不同fragment里分别放入webview; 出现的情况:每当按返回键是总是退出了...

影而有形
2016/08/31
250
0
TabLayout自定义tab,实现多样导航栏

前言 之前讲过TabLayout的基本属性全解,但是对于TabLayout实现的导航栏仍是有诸多限制,例如不能任意设置text的文字大小,若导航中涉及到图片的话,图片只能简单的设计到文字上方,所以布局...

奔跑的佩恩
01/07
0
0
Fragment + ViewPager +TabLayout

1.添加依赖 com.android.support:design:25.3.1 2.XML布局文件 <android.support.design.widget.TabLayout android:id="@+id/TabLayout" android:layoutwidth="matchparent" android:layouth......

空潼
2017/10/23
0
0
tablayout fragment

design中的tablayout怎么与fragment使用 我不要viewpager

蔡健烽
2015/11/12
866
1

没有更多内容

加载失败,请刷新页面

加载更多

IDE 插件新版本发布,开发效率 “biu” 起来了

近日,Cloud Toolkit正式推出了面向 IntelliJ 和 Eclipse 两个平台的新款插件,本文挑选了其中三个重大特性进行解读,点击文末官网跳转链接,可查看详细的版本说明。 本地应用一键部署到任何...

阿里云云栖社区
21分钟前
5
0
金丝雀发布、滚动发布、蓝绿发布到底有什么差别?关键点是什么?

根据 2017 年的 DevOps 发展报告,高效能组织和低效能组织在软件交付的效率上有数量级上的差异。技术组织的软件交付能力是一种综合能力,涉及众多环节,其中发布是尤为重要的环节。 作为技术...

问题终结者
49分钟前
3
0
Kubernetes Client-go Informer 源码分析

几乎所有的Controller manager 和CRD Controller 都会使用Client-go 的Informer 函数,这样通过Watch 或者Get List 可以获取对应的Object,下面我们从源码分析角度来看一下Client go Informe...

阿里云官方博客
今天
4
0
传统IDC部署网站(三)

11. 重置密码 密钥和密码都支持远程登陆, 二选一 两个都可以登陆, 密钥相对于密码来说,相对安全一点 本地登陆无法是用密钥 修改密码 root 用户 passwd root 修改普通用户 passwd usernam...

miko0089
今天
6
0
bash特性

1.支持别名 alias 2.命令替换 $(COMMANS) 或者 `COMMAND` 3. bash支持的引号: `` :命令替换 "":弱引用,可以实现变量替换 '':强引用,不实现变量替换 4.文件名通配 globbing:(man 7 glo...

忙碌的小蜜蜂
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部