1
0
Fork 0

For #10049: Provide correct seek bar value to screen readers.

master
mcarare 2020-06-22 19:07:19 +03:00 committed by Emily Kager
parent 00862708ae
commit 721e290734
1 changed files with 25 additions and 0 deletions

View File

@ -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