• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > TabLayout + ViewPager,tablayoutviewpager

TabLayout + ViewPager,tablayoutviewpager

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了tablayout viewpager,tablayout,tablayout用法,android tablayout,tablayout属性等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

TabLayout + ViewPager,tablayoutviewpager


一、实现思路

1、在build.gradle中添加依赖,例如:

compile 'com.android.support:support-v4:23.4.0'
compile 'com.android.support:design:23.4.0'

也可以将support-v4替换为appcompat-v7,例如:

compile 'com.android.support:appcompat-v7:23.4.0'

因为appcompat-v7是依赖于support-v4的。

更多说明可参考官方文档support library部分。

2、在xml中添加TabLayout和ViewPager,例如:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              xmlns:tool="http://schemas.android.com/tools"
              xmlns:app="http://schemas.android.com/apk/res-auto"
              tool:context=".TabViewActivity"
              android:orientation="vertical"
              android:layout_width="match_parent"
              android:layout_height="match_parent">

    <android.support.design.widget.TabLayout
        android:id="@+id/tab_layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/tabLayoutBackground"
        app:tabMode="scrollable"
        app:tabTextColor="@color/color_white"
        app:tabSelectedTextColor="@color/tabSelectedText"
        app:tabIndicatorHeight="3dp"
        app:tabIndicatorColor="@color/color_white"/>

    <android.support.v4.view.ViewPager
        android:id="@+id/view_pager"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

</LinearLayout>

TabLayout:

(1)tabMode有两个属性,一个是"scrollable",用于多标签;另一个是"fixed",用于少标签,它会让全部标签平均分布在屏幕上,所以标签不能多,而且名称也不能长,否则会显示不完整。

(2)tabIndicator是指文本下的指示条。当选中一个tab时,指示条才会出现,出现在文本下面。

3、获取View对象

        TabLayout tabLayout = (TabLayout) findViewById(R.id.tab_layout);
        ViewPager viewPager = (ViewPager) findViewById(R.id.view_pager);

4、创建FragmentStatePagerAdaper的子类,并实现构造方法

    public class ViewPagerAdapter extends FragmentStatePagerAdapter {
        public ViewPagerAdapter(FragmentManager fm) {
            super(fm);
        }
  }

 创建该类的一个实例对象

        ViewPagerAdapter viewPagerAdapter = new ViewPagerAdapter(getSupportFragmentManager());

 在这一步中,你可以选择是实现FragmentPagerAdapter的子类,或者是FragmentStatePagerAdapter的子类。

FragmentPagerAdapter用于页数较少的,也就Fragment的数量较少的,因为只要用户还停留在当前的Activity中,其中的Fragment都不会被销毁,所以内存消耗会比较大。

而FragmentStatePagerAdapter的工作原理类似于ListView,只要用户不可见的Fragment,都会被销毁,只保留它的状态。

因为我用的是v4兼容包下的Fragment,所以需要用getSupportFragmentManager()去获取FragmentManager。

5、设置ViewPager和TabLayout

        viewPager.setAdapter(viewPagerAdapter);
        tabLayout.setupWithViewPager(viewPager);

 

二、完善Adapter

1、重写三个方法

    public class ViewPagerAdapter extends FragmentStatePagerAdapter {

......
@Override
public Fragment getItem(int position) { return null; } @Override public int getCount() { return 0; } @Override public CharSequence getPageTitle(int position) { return super.getPageTitle(position); } }

2、创建tab的标题数据:

 private String[] mTitles = new String[]{"语文", "英语", "数学", "物理", "生物", "化学", "地理", "政治", "历史"};

创建Fragment的子类:

public class ViewPagerFragment extends Fragment {

    private static final String KEY = "extra";
    private String mMessage;

    public ViewPagerFragment() {
    }

    public static ViewPagerFragment newInstance(String extra) {
        Bundle args = new Bundle();
        args.putString(KEY, extra);
        ViewPagerFragment fragment = new ViewPagerFragment();
        fragment.setArguments(args);
        return fragment;
    }
}

创建Fragment的集合对象,并添加实例对象到集合里:

    private ArrayList<ViewPagerFragment> mViewPagerFragments = new ArrayList<>();

        ......

        for (int i = 0; i < mTitles.length; i++) {
            mViewPagerFragments.add(ViewPagerFragment.newInstance(mTitles[i]));
        }

 3、修改Adapter中的方法

    public class ViewPagerAdapter extends FragmentStatePagerAdapter {

        private String[] titles;
        private ArrayList<ViewPagerFragment> viewPagerFragments;

        public ViewPagerAdapter(FragmentManager fm) {
            super(fm);
        }

        public void setTitles(String[] titles) {
            this.titles = titles;
        }

        public void setFragments(ArrayList<ViewPagerFragment> viewPagerFragments) {
            this.viewPagerFragments = viewPagerFragments;
        }

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

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

        @Override
        public CharSequence getPageTitle(int


 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • TabLayout + ViewPager,tablayoutviewpager
  • TabLayout和ViewPager简单实现页卡的滑动,tablayoutviewpager

相关文章

  • 2017-05-26菜鸟新闻1--自定义VideoView实现欢迎页,1--videoview
  • 2017-05-26Android中使用Notification实现宽视图通知栏(Notification示例二),notification大视图
  • 2017-05-26错误提示”void is an invalid type for the variable“,invalidvariable
  • 2017-05-26Android4.4访问外部存储,android4.4访问存储
  • 2017-05-26违章查询源码分享,违章查询源码
  • 2017-05-26App启动页倒计时功能,app启动倒计时
  • 2017-05-26android去掉滑动到顶部和底部的阴影,android到顶部
  • 2017-05-26Android M以上运行时权限(Google官方出品),androidgoogle
  • 2017-05-26仿拉手团购App9-- 产品详情界面,团购app9--
  • 2017-05-26andriod 读取网络图片,

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Android中调用文件管理器并返回选中文件的路径,android文件管理器
    • Android View体系之从源码解析Scroller的相关内容
    • MVP模式在Android开发中的最佳实践
    • Android中button点击后字体的变色效果,androidbutton
    • Android中使用开源框架EventBus3.0实现Fragment之间的通信交互,fragment开源框架
    • Charles Proxy 4.1.2 破解版,charles4.1.2
    • android:Activity数据传递之全局对象(application)
    • Android开发免费类库和工具集合,android类库
    • Android开发学习之路--百度地图之初体验
    • unity安卓读写目录,unity安卓读写

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有