通常我们有这样一个需求,需要实现多个标签的切换,实现指示器背景色的改变,可以使用系统提供的TabLayout来实现。

一、首先我们在xml定义一个tablayout文件

<android.support.design.widget.TabLayoutandroid:id="@+id/tabLayout"android:layout_width="500dp"android:layout_height="50dp"android:background="@drawable/tab_bg"android:elevation="3dp"app:tabGravity="fill"app:tabIndicator="@drawable/tab_sel"app:tabIndicatorColor="@android:color/blue"app:tabIndicatorGravity="center"app:tabRippleColor="@android:color/transparent"app:tabTextAppearance="@style/tabLayoutTextStyle"app:tabTextColor="@android:color/white"></android.support.design.widget.TabLayout>

app:tabIndicator    tab指示器的背景图片

app:tabIndicatorColor    tab指示器的颜色

app:tabIndicatorGravity   指示器居中

app:tabRippleColor="@android:color/transparent"   取消指示器点击波纹效果

app:tabTextColor="@android:color/white"   tab的文字颜色

app:tabTextAppearance="@style/tabLayoutTextStyle"   这个是设置tab的文字大小,只能通过此方法,如下:

<style name="tabLayoutTextStyle"><item name="android:textSize">28sp</item></style>

二、在onCreate()进行初始化

        tabLayout.addTab(tabLayout.newTab().setText("成都"));//设置true为默认选中,不然第一次点击tablayout不会回调监听方法tabLayout.addTab(tabLayout.newTab().setText("重庆"), true);tabLayout.addTab(tabLayout.newTab().setText("上海"));//默认选中的tabtabLayout.setScrollPosition(1, 0, false);tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {@Overridepublic void onTabSelected(TabLayout.Tab tab) {int position = tab.getPosition();switch (position) {case 0: //修改指示器的颜色                                                                                        tabLayout.setSelectedTabIndicatorColor(getResources().getColor(R.color.007a67));                           //修改指示器背景图片tabLayout.setSelectedTabIndicator(R.drawable.tab_sel_1);case 1:tabLayout.setSelectedTabIndicatorColor(getResources().getColor(R.color.065eab));tabLayout.setSelectedTabIndicator(R.drawable.tab_sel_2);break;case 2:tabLayout.setSelectedTabIndicatorColor(getResources().getColor(R.color.6f5a0f));tabLayout.setSelectedTabIndicator(R.drawable.tab_sel_3);break;}}@Overridepublic void onTabUnselected(TabLayout.Tab tab) {}@Overridepublic void onTabReselected(TabLayout.Tab tab) {}});

这样基本能满足我们的需求了。但是可能有小伙伴注意到了,通过tabLayout.setSelectedTabIndicator(Drawable drawable);方法,我们只能把tab的标签设置成跟图片一样的形状,颜色并不是跟我们的图片一样,只能通过setSelectedTabIndicatorColor设置tab的背景颜色。而且TabLayout只能修改所有tab的文字颜色,如果我们需要改变单独某个tab的文字颜色,或者将指示器的背景使用图片,并在某些状态下tab还不能被选中呢,这样我们就只能使用自定义view来实现了,以后我会再开一篇文章给大家讲解。

TabLayout实现标签切换相关推荐

  1. html5 css3 卡片切换,HTML5之纯CSS3实现的tab标签切换

    HTML5的运用之纯CSS3实现的tab标签切换 CSS3代码实现的tab标签切换 *{padding:0px;margin:0px;} #tab{margin:20px;20px;position: ...

  2. html tab切换jquery,jQuery版Tab标签切换

    鼠标移入Tab的时候会有一定的延时才会切换到相应的项,防止用户不经意的鼠标操作,点击相应的项也可以切换 效果图: 源代码: Tab标签切换 body{ background:#fff;} *{ mar ...

  3. jQuery bind事件练习及tab标签切换的实现

    1.bind事件 jQuery部分代码: <script type="text/javascript"> $(document).ready(function(){   ...

  4. jQuery插件_SuperSlide插件(焦点图切换、标签切换、多个slide组合)

    SuperSlidev1.2 SuperSlide 是致力于实现网站统一特效调用的函数,能解决大部分标签切换.焦点图切换等效果,还能多个slide组合创造更多的效果.(兼容ie内核(包括无敌的ie6) ...

  5. android标签切换卡,Android切换卡TabWidget用法示例

    本文实例讲述了Android切换卡TabWidget用法.分享给大家供大家参考,具体如下: Tab选项卡类似与电话本的界面,通过多个标签切换不同的内容,要实现这个效果,首先要知道TabHost,它是一 ...

  6. 前端(jQuery)(10)-- jQuery标签切换

    本部分内容之后补 1.标签切换布局实现 掌握如何通过使用边框技巧完成实例效果 2.标签切换具体实现 使用 jQuery 完成动态效果,包含添加事件,对鼠标事件做处理,添加延时功能,提供更好的用户体验. ...

  7. JS 实现 Tab标签切换功能

    Tab标签切换 效果图: HTML部分: <div class="wrap">     <ul id="tag">       < ...

  8. Ubuntu下的终端多标签切换快捷键

    转自: Ubuntu下的终端多标签切换快捷键 - "温故而知新" - 博客园 https://www.cnblogs.com/hester/p/5570157.html 储备知识: ...

  9. 实现JS标签切换效果【CSS图片切换】

    运行代码尝试,我把整篇的CSS文件内容都弄上来了,难得去找具体内容了,反正能得到效果就可以了. 代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML ...

最新文章

  1. 一分钟详解PCL中点云配准技术
  2. Javascript 将html转成pdf,下载,支持多页哦(html2canvas 和 jsPDF)
  3. 定时器初值的计算方法
  4. 在Python中导入自己写的类,被划红线,但不影响执行
  5. 批量插入数据到mysql_批量插入数据到 MySQL的几种方式
  6. PS基础教程[1]如何制作微信泡泡
  7. 姿态坐标c语言,判断 AR 中坐标系的姿态和位置的简单方法
  8. Javascript培训PPT
  9. 键盘按键响应时间越快越好吗_按键响应、按键无冲、按键调速到底是怎么一回事?...
  10. 机器学习 | 决策树ID3算法
  11. 力扣LCP3机器人大冒险
  12. 物联网卡无法激活使用的原因
  13. 顶级程序员的心得 –– Coders at Work
  14. GPON与XGPON优势和劣势
  15. 【前端学习记录】Node.nodeType()
  16. 江淮汽车回应为小米代工;腾讯起诉腾迅获赔 30 万;鸿星尔克因公司系统崩溃、恳请顾客退款 | EA周报...
  17. 芯华章完成数亿元A+轮融资,红杉宽带数字产业基金领投,高瓴、高榕跟投|钛媒体首发...
  18. 生死狙击服务器维护什么意思,生死狙击停机更新维护公告
  19. 用Python批量裁剪图片
  20. 微信小程序考勤签到管理系统

热门文章

  1. 英文及数字全/半角转换
  2. Winamp 插件技术
  3. android吐丝的五种不同的显示
  4. DVWA指点迷津-Weak Session IDs
  5. 衡量您的IT OPS –第1部分
  6. Leetcode 765:情侣牵手 Couples Holding Hands
  7. Linux之 Shell分析日志文件
  8. Node.js+Express+Vue+MySQL+axios的项目搭建
  9. 想做期货,应该从哪开始学?
  10. 计算机考试通行证和信息反了,2019年全国计算机等级考试考前解题指导准考证常见问题.docx...