diff --git a/app/src/main/java/org/mozilla/fenix/settings/TextPercentageSeekBarPreference.kt b/app/src/main/java/org/mozilla/fenix/settings/TextPercentageSeekBarPreference.kt index 052c6ba47..f6bff9a85 100644 --- a/app/src/main/java/org/mozilla/fenix/settings/TextPercentageSeekBarPreference.kt +++ b/app/src/main/java/org/mozilla/fenix/settings/TextPercentageSeekBarPreference.kt @@ -29,9 +29,11 @@ import android.util.Log import android.util.TypedValue import android.view.KeyEvent import android.view.View +import android.view.accessibility.AccessibilityNodeInfo import android.widget.SeekBar import android.widget.SeekBar.OnSeekBarChangeListener import android.widget.TextView +import androidx.core.view.accessibility.AccessibilityNodeInfoCompat.RangeInfoCompat.RANGE_TYPE_PERCENT import androidx.preference.Preference import androidx.preference.PreferenceViewHolder import org.mozilla.fenix.R @@ -340,6 +342,25 @@ class TextPercentageSeekBarPreference @JvmOverloads constructor( val percentage = NumberFormat.getPercentInstance().format(decimalValue) mSeekBarValueTextView?.text = percentage } + + mSeekBar?.setAccessibilityDelegate(object : + View.AccessibilityDelegate() { + override fun onInitializeAccessibilityNodeInfo( + host: View?, + info: AccessibilityNodeInfo? + ) { + super.onInitializeAccessibilityNodeInfo(host, info) + val initialInfo = info?.rangeInfo + info?.rangeInfo = initialInfo?.let { + AccessibilityNodeInfo.RangeInfo.obtain( + RANGE_TYPE_PERCENT, + MIN_VALUE.toFloat(), + SEEK_BAR_MAX.toFloat(), + convertCurrentValue(it.current) + ) + } + } + }) } /** @@ -433,6 +454,10 @@ class TextPercentageSeekBarPreference @JvmOverloads constructor( } } + private fun convertCurrentValue(current: Float): Float { + return current * STEP_SIZE + MIN_VALUE.toFloat() + } + companion object { private const val TAG = "SeekBarPreference" private const val STEP_SIZE = 5