Skip to content

Commit e08cfd9

Browse files
committed
[LinearProgressIndicator] Fix stop indicator size when changing track thickness
^ Conflicts: ^ lib/java/com/google/android/material/progressindicator/LinearDrawingDelegate.java ^ lib/java/com/google/android/material/progressindicator/LinearProgressIndicatorSpec.java
1 parent 5a44939 commit e08cfd9

File tree

3 files changed

+13
-9
lines changed

3 files changed

+13
-9
lines changed

Diff for: lib/java/com/google/android/material/progressindicator/LinearDrawingDelegate.java

+5-4
Original file line numberDiff line numberDiff line change
@@ -373,7 +373,8 @@ void drawStopIndicator(
373373
@IntRange(from = 0, to = 255) int drawableAlpha) {
374374
int paintColor = MaterialColors.compositeARGBWithAlpha(color, drawableAlpha);
375375
drawingDeterminateIndicator = false;
376-
if (spec.trackStopIndicatorSize > 0 && paintColor != Color.TRANSPARENT) {
376+
int trackStopIndicatorSize = spec.getActualTrackStopIndicatorSize();
377+
if (trackStopIndicatorSize > 0 && paintColor != Color.TRANSPARENT) {
377378
// Draws the stop indicator at the end of the track if needed.
378379
paint.setStyle(Style.FILL);
379380
paint.setColor(paintColor);
@@ -386,9 +387,9 @@ void drawStopIndicator(
386387
paint,
387388
new PathPoint(
388389
new float[] {trackLength / 2 - stopIndicatorCenterX, 0}, new float[] {1, 0}),
389-
spec.trackStopIndicatorSize,
390-
spec.trackStopIndicatorSize,
391-
displayedCornerRadius * spec.trackStopIndicatorSize / displayedTrackThickness);
390+
trackStopIndicatorSize,
391+
trackStopIndicatorSize,
392+
displayedCornerRadius * trackStopIndicatorSize / displayedTrackThickness);
392393
}
393394
}
394395

Diff for: lib/java/com/google/android/material/progressindicator/LinearProgressIndicator.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -244,7 +244,7 @@ public int getTrackStopIndicatorSize() {
244244
*/
245245
public void setTrackStopIndicatorSize(@Px int trackStopIndicatorSize) {
246246
if (spec.trackStopIndicatorSize != trackStopIndicatorSize) {
247-
spec.trackStopIndicatorSize = min(trackStopIndicatorSize, spec.trackThickness);
247+
spec.trackStopIndicatorSize = trackStopIndicatorSize;
248248
spec.validateSpec();
249249
invalidate();
250250
}

Diff for: lib/java/com/google/android/material/progressindicator/LinearProgressIndicatorSpec.java

+7-4
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ public final class LinearProgressIndicatorSpec extends BaseProgressIndicatorSpec
4848

4949
boolean drawHorizontallyInverse;
5050

51-
/** The size of the stop indicator at the end of the track. */
51+
/** The desired size of the stop indicator at the end of the track. */
5252
@Px public int trackStopIndicatorSize;
5353

5454
/** The padding of the stop indicator at the end of the track. */
@@ -102,9 +102,7 @@ public LinearProgressIndicatorSpec(
102102
R.styleable.LinearProgressIndicator_indicatorDirectionLinear,
103103
LinearProgressIndicator.INDICATOR_DIRECTION_LEFT_TO_RIGHT);
104104
trackStopIndicatorSize =
105-
min(
106-
a.getDimensionPixelSize(R.styleable.LinearProgressIndicator_trackStopIndicatorSize, 0),
107-
trackThickness);
105+
a.getDimensionPixelSize(R.styleable.LinearProgressIndicator_trackStopIndicatorSize, 0);
108106
if (a.hasValue(R.styleable.LinearProgressIndicator_trackStopIndicatorPadding)) {
109107
trackStopIndicatorPadding =
110108
a.getDimensionPixelSize(R.styleable.LinearProgressIndicator_trackStopIndicatorPadding, 0);
@@ -143,6 +141,11 @@ public int getTrackInnerCornerRadiusInPx() {
143141
: trackInnerCornerRadius;
144142
}
145143

144+
@Px
145+
int getActualTrackStopIndicatorSize() {
146+
return min(trackStopIndicatorSize, trackThickness);
147+
}
148+
146149
@Override
147150
public boolean useStrokeCap() {
148151
return super.useStrokeCap() && getTrackInnerCornerRadiusInPx() == getTrackCornerRadiusInPx();

0 commit comments

Comments
 (0)