对View设置rightPadding后,发现ScrollBar绘制的位置发生了变化。为知其缘由,需要来看看View的绘制。
View绘制的是从draw(Canvas canvas)开始的,在此方法中View进行了6部分的绘制操作。其中ScrollBar的绘制是在onDrawForeground中发生的。
因为View设置的是绘制竖直方向的滚动条,所以需要分析下面的逻辑
其中computeVerticalScrollRange,computeVerticalScrollOffset,computeVerticalScrollExtent方法决定了ScrollBar是否显示,ScrollBar的大小。当需要自己控制ScrollBar绘制时,这三个方法是有必要重写的。
当ScrollBar的大小确定后,ScrollBar在View中的位置是由getVerticalScrollBarBounds的来实现的,并