summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/widget/TabWidget.java37
1 files changed, 37 insertions, 0 deletions
diff --git a/core/java/android/widget/TabWidget.java b/core/java/android/widget/TabWidget.java
index 6bced1c6977a..037110548cae 100644
--- a/core/java/android/widget/TabWidget.java
+++ b/core/java/android/widget/TabWidget.java
@@ -24,6 +24,7 @@ import android.graphics.Canvas;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.os.Build;
+import android.os.Bundle;
import android.util.AttributeSet;
import android.view.View;
import android.view.View.OnFocusChangeListener;
@@ -434,6 +435,42 @@ public class TabWidget extends LinearLayout implements OnFocusChangeListener {
public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) {
super.onInitializeAccessibilityNodeInfo(info);
info.setClassName(TabWidget.class.getName());
+
+ final int tabCount = getTabCount();
+
+ if (tabCount > 1) {
+ if (mSelectedTab > 0) {
+ info.addAction(AccessibilityNodeInfo.ACTION_SCROLL_BACKWARD);
+ info.setScrollable(true);
+ }
+
+ if (mSelectedTab < (tabCount - 1)) {
+ info.addAction(AccessibilityNodeInfo.ACTION_SCROLL_FORWARD);
+ info.setScrollable(true);
+ }
+ }
+ }
+
+ @Override
+ public boolean performAccessibilityAction(int action, Bundle arguments) {
+ final int tabCount = getTabCount();
+
+ switch (action) {
+ case AccessibilityNodeInfo.ACTION_SCROLL_BACKWARD:
+ if ((tabCount > 1) && (mSelectedTab > 0)) {
+ focusCurrentTab(mSelectedTab - 1);
+ return true;
+ }
+ return false;
+ case AccessibilityNodeInfo.ACTION_SCROLL_FORWARD:
+ if ((tabCount > 1) && (mSelectedTab < (tabCount - 1))) {
+ focusCurrentTab(mSelectedTab + 1);
+ return true;
+ }
+ return false;
+ }
+
+ return super.performAccessibilityAction(action, arguments);
}
/**