@@ -57,14 +57,18 @@ class TimelineDecorator(
57
57
}
58
58
59
59
override fun onDraw (c : Canvas , parent : RecyclerView , state : RecyclerView .State ) {
60
+ c.save()
61
+ c.clipRect(parent.paddingLeft, parent.paddingTop, parent.width, parent.height- parent.paddingBottom)
62
+
60
63
parent.children.forEach {
61
64
val itemPosition = parent.getChildAdapterPosition(it)
62
65
63
66
if (itemPosition == RecyclerView .NO_POSITION )
64
67
return
65
68
66
69
val timelineView = TimelineView (context = parent.context)
67
- (parent.adapter as ? TimelineAdapter )?.run {
70
+
71
+ (parent.adapter as ? TimelineAdapter ? : object : TimelineAdapter {}).run {
68
72
getTimelineViewType(itemPosition)?.let {
69
73
timelineView.viewType = it
70
74
} ? : timelineView.setType(itemPosition, parent.adapter?.itemCount ? : - 1 )
@@ -95,6 +99,7 @@ class TimelineDecorator(
95
99
timelineView.linePadding = it
96
100
}
97
101
}
102
+
98
103
timelineView.indicatorSize = indicatorSize
99
104
100
105
timelineView.indicatorYPosition = indicatorYPosition
@@ -127,16 +132,17 @@ class TimelineDecorator(
127
132
c.save()
128
133
when (position) {
129
134
Position .Left -> {
130
- c.translate(padding, it.top.toFloat())
135
+ c.translate(padding+ parent.paddingLeft , it.top.toFloat())
131
136
timelineView.layout(0 , 0 , timelineView.measuredWidth, it.measuredHeight)
132
137
}
133
138
Position .Right -> {
134
- c.translate(it.measuredWidth + padding, it.top.toFloat())
139
+ c.translate(it.measuredWidth + padding + parent.paddingLeft , it.top.toFloat())
135
140
timelineView.layout(0 , 0 , timelineView.measuredWidth, it.measuredHeight)
136
141
}
137
142
}
138
143
timelineView.draw(c)
139
144
c.restore()
140
145
}
146
+ c.restore()
141
147
}
142
148
}
0 commit comments