From c99d0a8a797aba4ec75ffdc766a3ca131ab84103 Mon Sep 17 00:00:00 2001 From: Maxim Bogatov Date: Wed, 27 May 2015 19:52:39 -0700 Subject: [PATCH] Make whole switchable header act as single Switch for AccessibilityService second part of b/21305287 Change-Id: I80da2ecbc367e10d027a851193f4d03ab8e09c69 --- .../android/settings/widget/SwitchBar.java | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/com/android/settings/widget/SwitchBar.java b/src/com/android/settings/widget/SwitchBar.java index 094b95f998c..d5f469c6c46 100644 --- a/src/com/android/settings/widget/SwitchBar.java +++ b/src/com/android/settings/widget/SwitchBar.java @@ -27,6 +27,8 @@ import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.view.accessibility.AccessibilityEvent; +import android.view.accessibility.AccessibilityNodeInfo; import android.widget.CompoundButton; import android.widget.LinearLayout; import android.widget.Switch; @@ -85,6 +87,7 @@ public class SwitchBar extends LinearLayout implements CompoundButton.OnCheckedC a.recycle(); mTextView = (TextView) findViewById(R.id.switch_text); + mTextView.setImportantForAccessibility(IMPORTANT_FOR_ACCESSIBILITY_NO); mLabel = getResources().getString(R.string.switch_off_text); mSummarySpan = new TextAppearanceSpan(mContext, R.style.TextAppearance_Small_SwitchBar); updateText(); @@ -95,6 +98,7 @@ public class SwitchBar extends LinearLayout implements CompoundButton.OnCheckedC // Prevent onSaveInstanceState() to be called as we are managing the state of the Switch // on our own mSwitch.setSaveEnabled(false); + mSwitch.setImportantForAccessibility(IMPORTANT_FOR_ACCESSIBILITY_NO); lp = (MarginLayoutParams) mSwitch.getLayoutParams(); lp.setMarginEnd(switchBarMarginEnd); @@ -275,4 +279,22 @@ public class SwitchBar extends LinearLayout implements CompoundButton.OnCheckedC requestLayout(); } + + /** @hide */ + @Override + public void onInitializeAccessibilityNodeInfoInternal(AccessibilityNodeInfo info) { + super.onInitializeAccessibilityNodeInfoInternal(info); + info.setClassName(Switch.class.getName()); + info.setText(mTextView.getText()); + info.setCheckable(true); + info.setChecked(mSwitch.isChecked()); + } + + /** @hide */ + @Override + public void onInitializeAccessibilityEventInternal(AccessibilityEvent event) { + super.onInitializeAccessibilityEventInternal(event); + event.setClassName(Switch.class.getName()); + event.setChecked(mSwitch.isChecked()); + } }