关于seekbar的thumb被截取的问题

最近在项目中使用了别人些的seekbar,发现seekbar的thumb的左右均被截取了一部分,非常不美观。

在网络上查了一下资料,大部分是将android:thumbOffset设置为0,基本可以得到正确的结果。(为啥是是基本可以得到正确的结果呢,因为动态设置了padding的话也是会影响thumb的位置的,这个后面通过源码可以看出。)

首先搞清楚了thumbOffset的作用是啥?
drawthumb
通过源码的drawThumb方法可以看出,mThumbOffset可以让thumb绘制在padding范围外。 通过这里也可以推断出,将thumbOffset设置为0就可以保证thumb在view的范围内,从而可以完整绘制。但是同时也可以看出x方向上的绘制起点也受mPaddingLeft影响。 所以如果调整了mThumbOffset的值后还是有截断的问题,那么就要看看是不是设置了mPaddingLeft了。
thumboffset
在setThumb方法中可以看到,mThumbOffset的值默认是thumb图片宽度的一半。

通过实际demo发现,seekbar控件在xml中使用android:paddingLeft或者android:paddingRight是无效的(如果设置的是android:padding属性,那么生效的只有上下的padding,而左右的padding也被忽略了)。 不知道为啥,替代的方式有如下两种
一是在xml中使用android:paddingStart和android:paddingEnd来代替,二是通过代码动态设置padding值。

结论
1、seekbar的thumb出现截断一般可以将thumbOffset设置为0,保证thumb在padding内绘制,如果还有发生截断的情况,则需要通过mPaddingLeft与mThumbOffset的大小关系没有维护好,导致绘制到了view的范围外了。
2、在xml文件中设置seekbar的paddingLeft或paddingRight是无效的,需通过paddingStart和paddingEnd来代替,或者通过代码动态设置。
3、seekbar中可以设置tickMark,在每个进度处绘制,形成一种刻度的样式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值