TabLayout是android.support.design里的一个控件,使用它可以很方便的做出顶部导航和底部导航。类似于这样的,能设置选中时字体的颜色和选中时的图片。

首先我们在 build.gradle中引入

compile 'com.android.support:design:23.2.1'

布局文件如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><android.support.design.widget.TabLayoutandroid:id="@+id/tab"android:layout_width="match_parent"android:layout_height="wrap_content"android:background="#32CD32"app:tabIndicatorColor="#f00"app:tabMode="fixed"app:tabSelectedTextColor="#444"app:tabTextColor="#fff"></android.support.design.widget.TabLayout><android.support.v4.view.ViewPagerandroid:id="@+id/vp"android:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="1"></android.support.v4.view.ViewPager></LinearLayout>


 顶部是一个TabLayout,可以设置background。app:tabIndicatorColor是设置指示器的背景颜色,app:tabIndicatorHeight设置指示器的高度,app:tabSelectedTextColor是选中时文本的颜色,app:tabTextColor是普通状态的文本颜色,app:tabMode是是否可滑动,有两个fixed和scrollable,fixed是固定的,scrollable是类似于今日头条那种可以滑动的。
activity代码如下:
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.design.widget.TabLayout;import java.util.ArrayList;
import java.util.List;public class MainActivity extends AppCompatActivity {private TabLayout tabLayout;private ViewPager vp;private String[] titles = new String[]{"关注", "推荐", "视频", "新时代", "图片", "热点"};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);tabLayout = (TabLayout) findViewById(R.id.tab);vp = (ViewPager) findViewById(R.id.vp);//        tabLayout.setTabTextColors(Color.WHITE, Color.GRAY);//设置文本在选中和为选中时候的颜色
//        tabLayout.setSelectedTabIndicatorColor(Color.WHITE);//设置选中时的指示器的颜色
//        tabLayout.setTabMode(TabLayout.MODE_SCROLLABLE);//可滑动,默认是FIXEDList<Fragment> fragments = new ArrayList<>();fragments.add(new BlankFragment());fragments.add(new BlankFragment());fragments.add(new BlankFragment());fragments.add(new BlankFragment());fragments.add(new BlankFragment());fragments.add(new BlankFragment());TitleFragmentPagerAdapter adapter = new TitleFragmentPagerAdapter(getSupportFragmentManager(), fragments, titles);vp.setAdapter(adapter);tabLayout.setupWithViewPager(vp);}
}

TitleFragmentPagerAdapter 适配器代码:
mport android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import java.util.List;/*** Created by yiqiang on 2018/4/18.*/public class TitleFragmentPagerAdapter extends FragmentPagerAdapter {private List<Fragment> mFragmentList;private String [] titles;public TitleFragmentPagerAdapter(FragmentManager fm, List<Fragment> mFragmentList) {super(fm);this.mFragmentList = mFragmentList;}/*** titles是给TabLayout设置title用的* @param fm* @param mFragmentList* @param titles*/public TitleFragmentPagerAdapter(FragmentManager fm, List<Fragment> mFragmentList, String[] titles) {super(fm);this.mFragmentList = mFragmentList;this.titles = titles;}/*** 描述:获取索引位置的Fragment.* @param position* @return*/@Overridepublic Fragment getItem(int position) {Fragment fragment = null;if (position < mFragmentList.size()){fragment = mFragmentList.get(position);}else{fragment = mFragmentList.get(0);}return fragment;}/*** 返回viewpager对应的title。* @param position* @return*/@Overridepublic CharSequence getPageTitle(int position) {if (titles != null && titles.length>0){return titles[position];}return null;}/*** 描述:获取数量.* @return*/@Overridepublic int getCount() {return mFragmentList.size();}
}

转载于:https://www.cnblogs.com/changyiqiang/p/8876688.html

TabLayout实现顶部导航栏(1)相关推荐

  1. TabLayout实现顶部导航(一)

    代码地址如下: http://www.demodashi.com/demo/14552.html ###前言 顶部导航栏,是我们在开发中比较常见的一种显示布局,它的实现可以有多种方式,那么今天我们就来 ...

  2. Android 资讯类App项目实战 第一章 滑动顶部导航栏

    前言: 正在做一个资讯类app,打算一边做一边整理,供自己学习与巩固.用到的知识复杂度不高,仅适于新手.经验不多,如果写出来的代码有不好的地方欢迎讨论. 该系列的其他文章 第二章 retrofit获取 ...

  3. android viewpager标题,ViewPager顶部导航栏联动效果(标题栏条目多)

    如果标题栏过多,超过屏幕的宽度,该怎么弄,下面我们就来解决一下,效果如下: 其实和之前写的也差不多,我就是在哪个demo里面添加和修改了一下,就加了几个title标题,加了几个图片,最重要的是给Tab ...

  4. uniapp添加顶部导航栏并且更换图标

    uni-app 是一个使用 Vue.js 开发跨平台应用的前端框架. 开发者通过编写 Vue.js 代码,uni-app 将其编译到iOS.Android.微信小程序等多个平台,保证其正确运行并达到优 ...

  5. react native 之自定义顶部导航栏,实现标题居中可控

    本来一直用的都是RN自带的组件react-navigation,但是后面需求有变,需要顶部导航栏目的标题可以自己控制,同一页面的标题根据数据库查出来的内容变化.因此自定义了一个导航栏目,实现需求. 关 ...

  6. 【Flutter】顶部导航栏实现 ( Scaffold | DefaultTabController | TabBar | Tab | TabBarView )

    文章目录 一.Scaffold 组件 二.实现顶部导航栏 三.DefaultTabController 导航标签控制组件 四.TabBar 导航按钮组件 五.Tab 标签组件 六.TabBarView ...

  7. android开发(49) android 使用 CollapsingToolbarLayout ,可折叠的顶部导航栏

    概述 在很app上都见过 可折叠的顶部导航栏效果.google support v7  提供了 CollapsingToolbarLayout 可以实现这个效果.效果图如下:    实现步骤 1. 写 ...

  8. uni-app开发:tabar组件与顶部导航栏(功能开发篇)

    uni-app开发:tabar组件与顶部导航栏(含右侧icon点击功能)[结合:案例Demo截图] 一.效果图 · 截图: 二. tabar组件 + 顶部导航栏(含右侧icon点击功能) 组件的代码调 ...

  9. Android开发笔记(二十)顶部导航栏ActionBar

    标题栏ActionBar ActionBar是在Android3.0之后引入的,所以Android2.x之前的版本不能直接使用ActionBar.现在ActionBar广泛用做APP的顶部导航栏,它在 ...

最新文章

  1. SparCC的微生物网络构建示例
  2. BEGIN-4 Fibonacci数列
  3. 自己遇到oracle的错误记录
  4. 最新美团JS逆向分析(_token参数)
  5. 数据库-SQL Server2005-第4季SQL从入门到提高-2SQL Server使用
  6. [转]vue解决刷新页面vuex数据、params参数消失的问题
  7. 计算机网络的拓扑结构
  8. IEEE 802.3标准简介以及各分类标准汇总
  9. 全球 Hoster Point DNS 遭受重大 DDoS 攻击
  10. Java实现JWS生成与验签
  11. Axmath:一款Word公式编辑神器
  12. 【小甲鱼编程题05】打印杨辉三角形
  13. 12星座超级独家!通过星座完美你自己!不断加新中……
  14. 解决 tabby 登录远程时报错:Handshake failed: no matching key exchange algorithm
  15. 安装linux系统时将选择下列哪一个操作,linux操作系统考试试卷
  16. 让知识构建未来—知识图谱技术与应用 | AI TIME-33
  17. PAP认证与CHAP认证的区别
  18. 高级OWI与ORACLE性能调整读书笔记之UPDATE/UPADTE引起的buffer busy wait
  19. androig中相机的使用
  20. 文化课2021-2022游记

热门文章

  1. IA-32 Intel手册学习笔记(二)保护模式下的内存管理
  2. beanpostprocessor与@autowired的关系
  3. Vi编辑器的使用方法
  4. 转义字符 /r与/n的区别
  5. 机器学习物语(2):大数定理军团
  6. Tarjan 强连通分量
  7. Python装饰器学习笔记
  8. Windows系统MySQL8.0的安装教程
  9. Generate Java objects for FpML using JAXB and Maven: The Easy Way!
  10. 分享Spring中Bean的4种依赖检查模式