From 58c950bc5e7c2db243bf1c4fc8c2b60f7392a00f Mon Sep 17 00:00:00 2001 From: pubiqq Date: Mon, 3 Feb 2025 14:44:02 +0300 Subject: [PATCH] [Slider] Use the locale from the context for formatting --- .../android/material/slider/BaseSlider.java | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/lib/java/com/google/android/material/slider/BaseSlider.java b/lib/java/com/google/android/material/slider/BaseSlider.java index 7d3b818166d..fd0ce455c66 100644 --- a/lib/java/com/google/android/material/slider/BaseSlider.java +++ b/lib/java/com/google/android/material/slider/BaseSlider.java @@ -16,6 +16,8 @@ package com.google.android.material.slider; +import androidx.core.os.ConfigurationCompat; +import androidx.core.os.LocaleListCompat; import com.google.android.material.R; import static android.view.accessibility.AccessibilityManager.FLAG_CONTENT_CONTROLS; @@ -305,6 +307,7 @@ abstract class BaseSlider< @NonNull private final Paint inactiveTicksPaint; @NonNull private final Paint activeTicksPaint; @NonNull private final Paint stopIndicatorPaint; + @NonNull private final Locale locale; @NonNull private final AccessibilityHelper accessibilityHelper; private final AccessibilityManager accessibilityManager; private AccessibilityEventSender accessibilityEventSender; @@ -476,6 +479,14 @@ public BaseSlider( // Initialize with just this view's visibility. thisAndAncestorsVisible = isShown(); + LocaleListCompat ll = ConfigurationCompat.getLocales(context.getResources().getConfiguration()); + if (ll.isEmpty()) { + ll = LocaleListCompat.getDefault(); + } + + //noinspection DataFlowIssue + locale = ll.get(0); + inactiveTrackPaint = new Paint(); activeTrackPaint = new Paint(); @@ -3762,7 +3773,7 @@ private String formatValue(float value) { return formatter.getFormattedValue(value); } - return String.format((int) value == value ? "%.0f" : "%.2f", value); + return String.format(locale, (int) value == value ? "%.0f" : "%.2f", value); } private void setValueForLabel(TooltipDrawable label, float value) { @@ -4334,7 +4345,7 @@ protected void onPopulateNodeForVirtualView( info.setStateDescription(stateDescription); } else { contentDescription.append( - String.format(Locale.getDefault(), "%s, %s", verbalValueType, verbalValue)); + String.format(slider.locale, "%s, %s", verbalValueType, verbalValue)); } info.setContentDescription(contentDescription.toString());