修改系统TabLayout(下划线宽度,底部分割线,竖直分割线等)

第一步:(类的提取)

首先打开系统TabLayout源码,查看所在的包

TabLayout类

将TabLayout类复制到自己所建的包中,这时类中所引用的类因为是包权限关系会找不到

比如:

1:ThemeUtils

ThemeUtils类

2:TabItem

TabItem类

3:AnimationUtils

AnimationUtils类

以上三个类如下图

系统类所在位置

找到系统TabLayout所在的包,将以上三个类提取出来 ,将TabLayout中所引用到的类改为提取出来的类,完成以上操作之后,可以像普通的自定义view一样使用自定义的TabLayout了。

第二步:(类文件整合)

将提取出来的类进行整合

1:AnimationUtils 中只有一个计算方法用到了 可删除此类 ,将方法与变量整合到TabLayout中

AnimationUtils类

2:ThemeUtils 中只是进行了一个主题检验,也可整合到TabLayout中

ThemeUtils类

3:TabItem 此类是一个自定义的view需要在布局文件中用到,固不改变

TabItem类

第三步:(自定义属性)

1: TabItem属性可自定义也可使用系统定义的。

2:TabLayout 先保留系统的属性(将系统定义的属性复制出来),也可添加自定义属性

此图为系统属性

系统属性

此图为添加了自定义属性之后

自定义属性

第四步(自定义属性的实现)

实现原则:保留系统TabLayout的特性,在此基础上进行扩展

实现代码:仅贴出部分代码(以下代码都比较简单都可根据需要自行更改)

构造方法的部分
属性的解析
属性的实现

第五步(效果呈现)


效果图

补充说明:下图可以看到 tabLayout.setupWithViewPager(viewPager);时移除了所有的Tabs

补充


以上内容如有不对,请指出,谢谢!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,026评论 19 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,680评论 25 708
  • 内容抽屉菜单ListViewWebViewSwitchButton按钮点赞按钮进度条TabLayout图标下拉刷新...
    皇小弟阅读 46,913评论 22 665
  • 十一长假期间出行的客户群体很多、保证车辆安全行驶是我们的责任。 体验:责任具体表现就是对工作认真负责
    京心达张新波阅读 133评论 0 0
  • 轰轰烈烈的魂牵梦绕的七夕活动,终于在人们睡去时刻宣布真正过去。要说这一天也跟其他日子一样,只有二十四小时,同样也是...
    成长路阅读 215评论 0 1