关于android 自定义TabBar的一些坑

需求

tabbar - item 突出

tmp303da380.png

ui结构

viewgroup + item布局

关于图标突出的实现

查看了几个库,两种思路:

clipchildren

这种思路,缺点,严重的缺点:超出部分,交互是异常的:viewgroup的事件机制所致,会响应到下面的布局上

坑点:这坑点不算大,查资料很多,clipchildren要设置到跟布局上,其实每个父布局都要设置这个属性:clipchildren = false。。。一直设置到activity或fragment的根节点上。。。所以,ui嵌套复杂的,还是转constraintlayout吧

最后,由于它的缺点,放弃了,使用下面的方案了

根布局写死突出图标

这种方案,缺点,让强迫症抓狂的缺点:既然我是封装库的,这个ui却要写到外面。并且不灵活啊,如果项目需求不同的身份,tabbaritem是有变动的,咋整。。。话说回来,item变动时候,突出图标不在中间的话,说明产品设计不合理

坑点因为采用这种方案,实在遇到hin多问题

fab自定义

第一个尝试的是fab,因为fab的交互很棒,点击给你的反馈很爽。。

android中使用fab,强迫癌会犯的,为毛设置width、height不管用,为毛图片要么很大要么很小呢

56dp
24dp

查看一下fab的源码,能找到fab是通过dimen资源设置的,

elevation

阴影,官方属性是:elevation

然后,就是各种尝试,viewgroup + iv,ivbutton,cl + iv等,在as中preview查看,都有阴影,但是真机跑起来就是mao都没有。天了噜,要不是我hin~,就放弃了

末了:问题出在shape上,stroke,stroke,stroke。。。切记,描边了,阴影就给搞没了,what‘s the 法克。。


    
    


或者


    

然后,阴影有了,就要追求fab那样的交互了:


android:stateListAnimator="@drawable/lift_on_touch"
android:foreground="?android:attr/selectableItemBackground"




    
        
            
        
    
    
        
            
        
    

补充

imageview设置elevation不管用。以为是png图怕的问题,png的通道是透明的,所以,又说设置阴影不管用

https://blog.csdn.net/u013564276/article/details/51701153

你可能感兴趣的:(关于android 自定义TabBar的一些坑)