summaryrefslogtreecommitdiffstats
path: root/core/java/android/widget/TimePickerClockDelegate.java
diff options
context:
space:
mode:
authorAlan Viverette <alanv@google.com>2014-12-10 09:46:49 -0800
committerAlan Viverette <alanv@google.com>2014-12-10 09:46:49 -0800
commit3fc00e3139706c2c90f8e7261eef48086887dc11 (patch)
tree3d03767f6fd8075be21adda84c6746e6933eeb64 /core/java/android/widget/TimePickerClockDelegate.java
parent0aac16bbf1fd122302f8e58b7d4d5ee9d6afebc5 (diff)
downloadframeworks_base-3fc00e3139706c2c90f8e7261eef48086887dc11.zip
frameworks_base-3fc00e3139706c2c90f8e7261eef48086887dc11.tar.gz
frameworks_base-3fc00e3139706c2c90f8e7261eef48086887dc11.tar.bz2
Improve time picker accessibility
Overrides click action description for TimePicker hour/minute selectors and manually specifies traversal order for radial time picker nodes. BUG: 17468036 Change-Id: I4472b42a95d762085d7a4d382feb2b9216c0d41c
Diffstat (limited to 'core/java/android/widget/TimePickerClockDelegate.java')
-rw-r--r--core/java/android/widget/TimePickerClockDelegate.java22
1 files changed, 22 insertions, 0 deletions
diff --git a/core/java/android/widget/TimePickerClockDelegate.java b/core/java/android/widget/TimePickerClockDelegate.java
index d61b6fc..8d475a7 100644
--- a/core/java/android/widget/TimePickerClockDelegate.java
+++ b/core/java/android/widget/TimePickerClockDelegate.java
@@ -33,9 +33,11 @@ import android.view.KeyCharacterMap;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
+import android.view.View.AccessibilityDelegate;
import android.view.ViewGroup;
import android.view.accessibility.AccessibilityEvent;
import android.view.accessibility.AccessibilityNodeInfo;
+import android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction;
import com.android.internal.R;
@@ -136,9 +138,13 @@ class TimePickerClockDelegate extends TimePicker.AbstractTimePickerDelegate impl
// Set up hour/minute labels.
mHourView = (TextView) mHeaderView.findViewById(R.id.hours);
mHourView.setOnClickListener(mClickListener);
+ mHourView.setAccessibilityDelegate(
+ new ClickActionDelegate(context, R.string.select_hours));
mSeparatorView = (TextView) mHeaderView.findViewById(R.id.separator);
mMinuteView = (TextView) mHeaderView.findViewById(R.id.minutes);
mMinuteView.setOnClickListener(mClickListener);
+ mMinuteView.setAccessibilityDelegate(
+ new ClickActionDelegate(context, R.string.select_minutes));
final int headerTimeTextAppearance = a.getResourceId(
R.styleable.TimePicker_headerTimeTextAppearance, 0);
@@ -206,6 +212,22 @@ class TimePickerClockDelegate extends TimePicker.AbstractTimePickerDelegate impl
initialize(currentHour, currentMinute, false /* 12h */, HOUR_INDEX);
}
+ private static class ClickActionDelegate extends AccessibilityDelegate {
+ private final AccessibilityAction mClickAction;
+
+ public ClickActionDelegate(Context context, int resId) {
+ mClickAction = new AccessibilityAction(
+ AccessibilityNodeInfo.ACTION_CLICK, context.getString(resId));
+ }
+
+ @Override
+ public void onInitializeAccessibilityNodeInfo(View host, AccessibilityNodeInfo info) {
+ super.onInitializeAccessibilityNodeInfo(host, info);
+
+ info.addAction(mClickAction);
+ }
+ }
+
private int computeStableWidth(TextView v, int maxNumber) {
int maxWidth = 0;