坑1: TabItem添加id属性,然后用注解绑定,发现找不到,卧槽。。。如下不要去找那个item。用tablayout去动态获取。

  <android.support.design.widget.TabLayoutandroid:id="@+id/fkg_tableyout"android:layout_width="match_parent"android:layout_height="32dp"app:elevation="0dp"app:layout_constraintTop_toTopOf="parent"app:tabGravity="center"app:tabIndicatorHeight="0dp"app:tabMode="fixed"app:tabPaddingEnd="16dp"app:tabPaddingStart="24dp"app:tabSelectedTextColor="@color/green_all_bg"app:tabTextAppearance="@style/MyCustomTextAppearance2"app:tabTextColor="@color/white"><android.support.design.widget.TabItemandroid:id="@+id/dfdsf"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="知识库" /><android.support.design.widget.TabItemandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="新闻资讯" /></android.support.design.widget.TabLayout>

坑2 - 这是我的方式,目前测试没有问题: 循环获取fkg_tableyout.getTabCount()的时候,不要直接在UI线程里面,太早了。虽然可以获取到,但是此时tab位置不确定,你如果靠第几个去设置背景,容易出问题。所以建议延迟获取,或者如下:

  HashMap<Integer, TabLayout.Tab> tabList = new HashMap<>();fkg_tableyout.addOnTabSelectedListener(new TabLayout.BaseOnTabSelectedListener() {@Overridepublic void onTabSelected(TabLayout.Tab tab) {// 这里才是加载完后获取对应位置的数据,不然会错位的if (tabList.size() <= 0) {for (int i = 0; i < fkg_tableyout.getTabCount(); ++i) {tabList.put(fkg_tableyout.getTabAt(i).getPosition(), fkg_tableyout.getTabAt(i));}}if (0 == tab.getPosition()) {ViewCompat.setBackground(tabList.get(0).view, mContext.getResources().getDrawable(R.drawable.tab_green_stroke_solid_white_shape));ViewCompat.setBackground(tabList.get(1).view, mContext.getResources().getDrawable(R.drawable.tab_green_stroke_solid_green_shape));} else {ViewCompat.setBackground(tabList.get(0).view, mContext.getResources().getDrawable(R.drawable.tab_green_stroke_solid_green_shape2));ViewCompat.setBackground(tabList.get(1).view, mContext.getResources().getDrawable(R.drawable.tab_green_stroke_solid_white_shape2));}}@Overridepublic void onTabUnselected(TabLayout.Tab tab) {}@Overridepublic void onTabReselected(TabLayout.Tab tab) {}});

3. 建议最好还是动态创建Tab,然后添加,那样比较靠谱。。 网上有类似动态修改的方式,你可以参考,遇到问题,多调试吧。。我也是折腾了一久。。。

这是Tablayout的配置。。。

 <!--app:tabBackground="@drawable/tab_selector"--><android.support.design.widget.TabLayoutandroid:id="@+id/fkg_tableyout"android:layout_width="match_parent"android:layout_height="32dp"app:elevation="0dp"app:layout_constraintTop_toTopOf="parent"app:tabGravity="center"app:tabIndicatorHeight="0dp"app:tabMode="fixed"app:tabPaddingEnd="16dp"app:tabPaddingStart="24dp"app:tabSelectedTextColor="@color/green_all_bg"app:tabTextAppearance="@style/MyCustomTextAppearance2"app:tabTextColor="@color/white"><android.support.design.widget.TabItemandroid:layout_width="wrap_content"android:id="@+id/dfdsf"android:layout_height="wrap_content"android:text="知识库" /><android.support.design.widget.TabItemandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="新闻资讯" /></android.support.design.widget.TabLayout>

效果:

我之前都是动态创建的,哈哈。。这次尝试了不太一样的方式.......喵....

android gridlayout动态添加_Android-TabLayout-动态设置TabItem的背景Shape.有坑.......相关推荐

  1. Qt封装TDMS文件实现动态添加组以及动态写入通道数据

    TDMS文件: TDMS文件是NI主推的一种二进制记录文件,TDMS文件由三个层次结构级别组成:文件.组.通道.在NI的LabVIEW软件中,可通过许多接口直接访问NI TDMS文件,但使用LABVI ...

  2. Vue中 动态添加class写法 动态静态clas混合

    Vue中 动态添加class写法 动态静态clas混合 示例 //fx,cont-block为静态class ob为动态class <div :class="[ 'fx','cont- ...

  3. 动态添加综合布局---动态添加控件及将某XML动态加入到Activity显示(续)

    前言:以前曾写过一篇关于动态生成控件的文章<动态添加控件及将某XML动态加入到Activity显示>,比较浅显,对于RelativeLayout的相关布局设置方法及相对布局与线性布局的混合 ...

  4. 动态添加 ajax,ajax动态的添加内容【原创】

    以前只是见过很多动态添加内容的效果,这次还是自己第一次在项目里接触到呢,就简单记录下来了,希望对大家有帮助. 这里的效果是选中一个选择框,对应的内容区就会相应的出现对应的详细内容,取消选择框,对应的内 ...

  5. php动态添加查询,php动态添加url查询参数的方法,php动态url参数_PHP教程

    php动态添加url查询参数的方法,php动态url参数 本文实例讲述了php动态添加url查询参数的方法.分享给大家供大家参考.具体分析如下: 这段代码可以动态为url添加key-value查询参数 ...

  6. layui option 动态添加_layui select动态添加option的实例

    html 产品类别 轻松融 容易融 快乐融 增加产品类别 js //重新渲染表单 function renderForm(){ layui.use('form', function(){ var fo ...

  7. python动态添加类方法_Python 动态添加类方法

    习题: 1. Shape基类,要求所有子类都必须提供面积的计算,子类有三角形.矩形.圆. 2. 上题圆类的数据可序列化 第一种方法:使用Mixin多继承组合的方式,混入其它类的属性和方法 第二种方法: ...

  8. layui option 动态添加_layuiselect如何动态添加option

    这次给大家带来layui select如何动态添加option,layui select动态添加option的注意事项有哪些,下面就是实战案例,一起来看一下. html 产品类别 轻松融 容易融 快乐 ...

  9. Elastic-Job:动态添加任务,支持动态分片

    多情只有春庭月,犹为离人照落花. 概述 因项目中使用到定时任务,且服务部署多实例,因此需要解决定时任务重复执行的问题.即在同一时间点,每一个定时任务只在一个节点上执行.常见的开源方案,如 elasti ...

最新文章

  1. BZOJ.3218.a + b Problem(最小割ISAP 可持久化线段树优化建图)
  2. Hsiaoyang: Google与站点地图Sitemap
  3. centos7 geenplum5.x postgis开源版本编译
  4. Remoting疑惑续集之再续
  5. python中字典按键或键值排序_[宜配屋]听图阁
  6. An attempt by a client to checkout a Connectio n has timed out报错解决
  7. SHELL 分析 列出当天访问次数最多的IP
  8. 如何不重启热更新线上 Java 代码?
  9. 记录片《货币》- 有价星球笔记
  10. 如何破解锐捷支持多网卡
  11. 路由器 OSPF 动态路由配置
  12. Cartesian coordinate system
  13. VR 与 AR 开发实战
  14. ​Android实现仿QQ登录可编辑下拉菜单
  15. Python实现电子钢琴及封装
  16. (64)-- 爬取58同城网页信息
  17. STM32 keyboard USB HID键盘功能的实现
  18. MAC双系统U盘安装方法
  19. 0057-在OpenCV环境下使用KNN背景建模提取前景目标
  20. R语言心得说:R语言之xlsx包读写Excel数据

热门文章

  1. python语言数据挖掘python语言数据_Python语言数据挖掘01-环境搭建
  2. python高阶函数、map reduce 自己如何去定义_「python」高阶函数map、reduce的介绍
  3. php 取数组数量_PHP array_slice():截取数组的一部分
  4. 【2017年第4期】专题:大数据标准
  5. 李名洋(1983-),男,中国电信股份有限公司云计算分公司数据分析师。
  6. 【数字逻辑设计】Logisim构建四位行波进位加法器
  7. win10系统同时安装python2和python3
  8. DoTween NGUI bug
  9. 兔子--百度地图所需的jar+so下载地址
  10. jQuery刻度尺滚动滑块插件