Loading core/java/android/view/View.java +2 −2 Original line number Original line Diff line number Diff line Loading @@ -4776,11 +4776,11 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal info.addAction(AccessibilityNodeInfo.ACTION_CLEAR_ACCESSIBILITY_FOCUS); info.addAction(AccessibilityNodeInfo.ACTION_CLEAR_ACCESSIBILITY_FOCUS); } } if (isClickable()) { if (isClickable() && isEnabled()) { info.addAction(AccessibilityNodeInfo.ACTION_CLICK); info.addAction(AccessibilityNodeInfo.ACTION_CLICK); } } if (isLongClickable()) { if (isLongClickable() && isEnabled()) { info.addAction(AccessibilityNodeInfo.ACTION_LONG_CLICK); info.addAction(AccessibilityNodeInfo.ACTION_LONG_CLICK); } } Loading core/java/android/widget/AbsListView.java +31 −21 Original line number Original line Diff line number Diff line Loading @@ -1470,6 +1470,7 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) { public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) { super.onInitializeAccessibilityNodeInfo(info); super.onInitializeAccessibilityNodeInfo(info); info.setClassName(AbsListView.class.getName()); info.setClassName(AbsListView.class.getName()); if (isEnabled()) { if (getFirstVisiblePosition() > 0) { if (getFirstVisiblePosition() > 0) { info.addAction(AccessibilityNodeInfo.ACTION_SCROLL_BACKWARD); info.addAction(AccessibilityNodeInfo.ACTION_SCROLL_BACKWARD); } } Loading @@ -1477,6 +1478,7 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te info.addAction(AccessibilityNodeInfo.ACTION_SCROLL_FORWARD); info.addAction(AccessibilityNodeInfo.ACTION_SCROLL_FORWARD); } } } } } @Override @Override public boolean performAccessibilityAction(int action, Bundle arguments) { public boolean performAccessibilityAction(int action, Bundle arguments) { Loading @@ -1485,14 +1487,14 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te } } switch (action) { switch (action) { case AccessibilityNodeInfo.ACTION_SCROLL_FORWARD: { case AccessibilityNodeInfo.ACTION_SCROLL_FORWARD: { if (getLastVisiblePosition() < getCount() - 1) { if (isEnabled() && getLastVisiblePosition() < getCount() - 1) { final int viewportHeight = getHeight() - mListPadding.top - mListPadding.bottom; final int viewportHeight = getHeight() - mListPadding.top - mListPadding.bottom; smoothScrollBy(viewportHeight, PositionScroller.SCROLL_DURATION); smoothScrollBy(viewportHeight, PositionScroller.SCROLL_DURATION); return true; return true; } } } return false; } return false; case AccessibilityNodeInfo.ACTION_SCROLL_BACKWARD: { case AccessibilityNodeInfo.ACTION_SCROLL_BACKWARD: { if (mFirstPosition > 0) { if (isEnabled() && mFirstPosition > 0) { final int viewportHeight = getHeight() - mListPadding.top - mListPadding.bottom; final int viewportHeight = getHeight() - mListPadding.top - mListPadding.bottom; smoothScrollBy(-viewportHeight, PositionScroller.SCROLL_DURATION); smoothScrollBy(-viewportHeight, PositionScroller.SCROLL_DURATION); return true; return true; Loading Loading @@ -2294,17 +2296,19 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te return; return; } } if (isClickable()) { if (isClickable() && isEnabled()) { info.addAction(AccessibilityNodeInfo.ACTION_CLICK); info.addAction(AccessibilityNodeInfo.ACTION_CLICK); info.setClickable(true); info.setClickable(true); } } if (isLongClickable()) { if (isLongClickable() && isEnabled()) { info.addAction(AccessibilityNodeInfo.ACTION_LONG_CLICK); info.addAction(AccessibilityNodeInfo.ACTION_LONG_CLICK); info.setLongClickable(true); info.setLongClickable(true); } } if (isEnabled()) { info.addAction(AccessibilityNodeInfo.ACTION_SELECT); info.addAction(AccessibilityNodeInfo.ACTION_SELECT); } if (position == getSelectedItemPosition()) { if (position == getSelectedItemPosition()) { info.setSelected(true); info.setSelected(true); Loading @@ -2313,34 +2317,40 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te @Override @Override public boolean performAccessibilityAction(View host, int action, Bundle arguments) { public boolean performAccessibilityAction(View host, int action, Bundle arguments) { if (super.performAccessibilityAction(host, action, arguments)) { return true; } final int position = getPositionForView(host); final int position = getPositionForView(host); if (position == INVALID_POSITION) { if (position == INVALID_POSITION) { return false; return false; } } if (!isEnabled()) { return false; } final long id = getItemIdAtPosition(position); final long id = getItemIdAtPosition(position); switch (action) { switch (action) { case AccessibilityNodeInfo.ACTION_SELECT: case AccessibilityNodeInfo.ACTION_SELECT: { setSelection(position); setSelection(position); return true; return true; case AccessibilityNodeInfo.ACTION_CLICK: } if (!super.performAccessibilityAction(host, action, arguments)) { case AccessibilityNodeInfo.ACTION_CLICK: { if (isClickable()) { return performItemClick(host, position, id); return performItemClick(host, position, id); } } return true; } return false; case AccessibilityNodeInfo.ACTION_LONG_CLICK: case AccessibilityNodeInfo.ACTION_LONG_CLICK: { if (!super.performAccessibilityAction(host, action, arguments)) { if (isLongClickable()) { return performLongPress(host, position, id); return performLongPress(host, position, id); } } return true; } return false; case AccessibilityNodeInfo.ACTION_ACCESSIBILITY_FOCUS: smoothScrollToPosition(position); break; } } return super.performAccessibilityAction(host, action, arguments); return false; } } } } Loading core/java/android/widget/Gallery.java +9 −7 Original line number Original line Diff line number Diff line Loading @@ -1369,13 +1369,15 @@ public class Gallery extends AbsSpinner implements GestureDetector.OnGestureList super.onInitializeAccessibilityNodeInfo(info); super.onInitializeAccessibilityNodeInfo(info); info.setClassName(Gallery.class.getName()); info.setClassName(Gallery.class.getName()); info.setScrollable(mItemCount > 1); info.setScrollable(mItemCount > 1); if (isEnabled()) { if (mItemCount > 0 && mSelectedPosition < mItemCount - 1) { if (mItemCount > 0 && mSelectedPosition < mItemCount - 1) { info.addAction(AccessibilityNodeInfo.ACTION_SCROLL_FORWARD); info.addAction(AccessibilityNodeInfo.ACTION_SCROLL_FORWARD); } } if (mItemCount > 0 && mSelectedPosition > 0) { if (isEnabled() && mItemCount > 0 && mSelectedPosition > 0) { info.addAction(AccessibilityNodeInfo.ACTION_SCROLL_BACKWARD); info.addAction(AccessibilityNodeInfo.ACTION_SCROLL_BACKWARD); } } } } } @Override @Override public boolean performAccessibilityAction(int action, Bundle arguments) { public boolean performAccessibilityAction(int action, Bundle arguments) { Loading @@ -1384,13 +1386,13 @@ public class Gallery extends AbsSpinner implements GestureDetector.OnGestureList } } switch (action) { switch (action) { case AccessibilityNodeInfo.ACTION_SCROLL_FORWARD: { case AccessibilityNodeInfo.ACTION_SCROLL_FORWARD: { if (mItemCount > 0 && mSelectedPosition < mItemCount - 1) { if (isEnabled() && mItemCount > 0 && mSelectedPosition < mItemCount - 1) { final int currentChildIndex = mSelectedPosition - mFirstPosition; final int currentChildIndex = mSelectedPosition - mFirstPosition; return scrollToChild(currentChildIndex + 1); return scrollToChild(currentChildIndex + 1); } } } return false; } return false; case AccessibilityNodeInfo.ACTION_SCROLL_BACKWARD: { case AccessibilityNodeInfo.ACTION_SCROLL_BACKWARD: { if (mItemCount > 0 && mSelectedPosition > 0) { if (isEnabled() && mItemCount > 0 && mSelectedPosition > 0) { final int currentChildIndex = mSelectedPosition - mFirstPosition; final int currentChildIndex = mSelectedPosition - mFirstPosition; return scrollToChild(currentChildIndex - 1); return scrollToChild(currentChildIndex - 1); } } Loading core/java/android/widget/HorizontalScrollView.java +8 −2 Original line number Original line Diff line number Diff line Loading @@ -744,6 +744,9 @@ public class HorizontalScrollView extends FrameLayout { } } switch (action) { switch (action) { case AccessibilityNodeInfo.ACTION_SCROLL_FORWARD: { case AccessibilityNodeInfo.ACTION_SCROLL_FORWARD: { if (!isEnabled()) { return false; } final int viewportWidth = getWidth() - mPaddingLeft - mPaddingRight; final int viewportWidth = getWidth() - mPaddingLeft - mPaddingRight; final int targetScrollX = Math.min(mScrollX + viewportWidth, getScrollRange()); final int targetScrollX = Math.min(mScrollX + viewportWidth, getScrollRange()); if (targetScrollX != mScrollX) { if (targetScrollX != mScrollX) { Loading @@ -752,6 +755,9 @@ public class HorizontalScrollView extends FrameLayout { } } } return false; } return false; case AccessibilityNodeInfo.ACTION_SCROLL_BACKWARD: { case AccessibilityNodeInfo.ACTION_SCROLL_BACKWARD: { if (!isEnabled()) { return false; } final int viewportWidth = getWidth() - mPaddingLeft - mPaddingRight; final int viewportWidth = getWidth() - mPaddingLeft - mPaddingRight; final int targetScrollX = Math.max(0, mScrollX - viewportWidth); final int targetScrollX = Math.max(0, mScrollX - viewportWidth); if (targetScrollX != mScrollX) { if (targetScrollX != mScrollX) { Loading @@ -770,10 +776,10 @@ public class HorizontalScrollView extends FrameLayout { final int scrollRange = getScrollRange(); final int scrollRange = getScrollRange(); if (scrollRange > 0) { if (scrollRange > 0) { info.setScrollable(true); info.setScrollable(true); if (mScrollX > 0) { if (isEnabled() && mScrollX > 0) { info.addAction(AccessibilityNodeInfo.ACTION_SCROLL_BACKWARD); info.addAction(AccessibilityNodeInfo.ACTION_SCROLL_BACKWARD); } } if (mScrollX < scrollRange) { if (isEnabled() && mScrollX < scrollRange) { info.addAction(AccessibilityNodeInfo.ACTION_SCROLL_FORWARD); info.addAction(AccessibilityNodeInfo.ACTION_SCROLL_FORWARD); } } } } Loading core/java/android/widget/NumberPicker.java +36 −21 Original line number Original line Diff line number Diff line Loading @@ -2173,13 +2173,15 @@ public class NumberPicker extends LinearLayout { return false; return false; } } case AccessibilityNodeInfo.ACTION_SCROLL_FORWARD: { case AccessibilityNodeInfo.ACTION_SCROLL_FORWARD: { if (getWrapSelectorWheel() || getValue() < getMaxValue()) { if (NumberPicker.this.isEnabled() && (getWrapSelectorWheel() || getValue() < getMaxValue())) { changeValueByOne(true); changeValueByOne(true); return true; return true; } } } return false; } return false; case AccessibilityNodeInfo.ACTION_SCROLL_BACKWARD: { case AccessibilityNodeInfo.ACTION_SCROLL_BACKWARD: { if (getWrapSelectorWheel() || getValue() > getMinValue()) { if (NumberPicker.this.isEnabled() && (getWrapSelectorWheel() || getValue() > getMinValue())) { changeValueByOne(false); changeValueByOne(false); return true; return true; } } Loading @@ -2189,21 +2191,24 @@ public class NumberPicker extends LinearLayout { case VIRTUAL_VIEW_ID_INPUT: { case VIRTUAL_VIEW_ID_INPUT: { switch (action) { switch (action) { case AccessibilityNodeInfo.ACTION_FOCUS: { case AccessibilityNodeInfo.ACTION_FOCUS: { if (!mInputText.isFocused()) { if (NumberPicker.this.isEnabled() && !mInputText.isFocused()) { return mInputText.requestFocus(); return mInputText.requestFocus(); } } } break; } break; case AccessibilityNodeInfo.ACTION_CLEAR_FOCUS: { case AccessibilityNodeInfo.ACTION_CLEAR_FOCUS: { if (mInputText.isFocused()) { if (NumberPicker.this.isEnabled() && mInputText.isFocused()) { mInputText.clearFocus(); mInputText.clearFocus(); return true; return true; } } return false; return false; } } case AccessibilityNodeInfo.ACTION_CLICK: { case AccessibilityNodeInfo.ACTION_CLICK: { if (NumberPicker.this.isEnabled()) { showSoftInput(); showSoftInput(); return true; return true; } } return false; } case AccessibilityNodeInfo.ACTION_ACCESSIBILITY_FOCUS: { case AccessibilityNodeInfo.ACTION_ACCESSIBILITY_FOCUS: { if (mAccessibilityFocusedView != virtualViewId) { if (mAccessibilityFocusedView != virtualViewId) { mAccessibilityFocusedView = virtualViewId; mAccessibilityFocusedView = virtualViewId; Loading @@ -2230,10 +2235,13 @@ public class NumberPicker extends LinearLayout { case VIRTUAL_VIEW_ID_INCREMENT: { case VIRTUAL_VIEW_ID_INCREMENT: { switch (action) { switch (action) { case AccessibilityNodeInfo.ACTION_CLICK: { case AccessibilityNodeInfo.ACTION_CLICK: { if (NumberPicker.this.isEnabled()) { NumberPicker.this.changeValueByOne(true); NumberPicker.this.changeValueByOne(true); sendAccessibilityEventForVirtualView(virtualViewId, sendAccessibilityEventForVirtualView(virtualViewId, AccessibilityEvent.TYPE_VIEW_CLICKED); AccessibilityEvent.TYPE_VIEW_CLICKED); } return true; return true; } } return false; case AccessibilityNodeInfo.ACTION_ACCESSIBILITY_FOCUS: { case AccessibilityNodeInfo.ACTION_ACCESSIBILITY_FOCUS: { if (mAccessibilityFocusedView != virtualViewId) { if (mAccessibilityFocusedView != virtualViewId) { mAccessibilityFocusedView = virtualViewId; mAccessibilityFocusedView = virtualViewId; Loading @@ -2257,11 +2265,14 @@ public class NumberPicker extends LinearLayout { case VIRTUAL_VIEW_ID_DECREMENT: { case VIRTUAL_VIEW_ID_DECREMENT: { switch (action) { switch (action) { case AccessibilityNodeInfo.ACTION_CLICK: { case AccessibilityNodeInfo.ACTION_CLICK: { if (NumberPicker.this.isEnabled()) { final boolean increment = (virtualViewId == VIRTUAL_VIEW_ID_INCREMENT); final boolean increment = (virtualViewId == VIRTUAL_VIEW_ID_INCREMENT); NumberPicker.this.changeValueByOne(increment); NumberPicker.this.changeValueByOne(increment); sendAccessibilityEventForVirtualView(virtualViewId, sendAccessibilityEventForVirtualView(virtualViewId, AccessibilityEvent.TYPE_VIEW_CLICKED); AccessibilityEvent.TYPE_VIEW_CLICKED); } return true; return true; } } return false; case AccessibilityNodeInfo.ACTION_ACCESSIBILITY_FOCUS: { case AccessibilityNodeInfo.ACTION_ACCESSIBILITY_FOCUS: { if (mAccessibilityFocusedView != virtualViewId) { if (mAccessibilityFocusedView != virtualViewId) { mAccessibilityFocusedView = virtualViewId; mAccessibilityFocusedView = virtualViewId; Loading Loading @@ -2470,7 +2481,9 @@ public class NumberPicker extends LinearLayout { if (mAccessibilityFocusedView == virtualViewId) { if (mAccessibilityFocusedView == virtualViewId) { info.addAction(AccessibilityNodeInfo.ACTION_CLEAR_ACCESSIBILITY_FOCUS); info.addAction(AccessibilityNodeInfo.ACTION_CLEAR_ACCESSIBILITY_FOCUS); } } if (NumberPicker.this.isEnabled()) { info.addAction(AccessibilityNodeInfo.ACTION_CLICK); info.addAction(AccessibilityNodeInfo.ACTION_CLICK); } return info; return info; } } Loading Loading @@ -2509,12 +2522,14 @@ public class NumberPicker extends LinearLayout { if (mAccessibilityFocusedView == View.NO_ID) { if (mAccessibilityFocusedView == View.NO_ID) { info.addAction(AccessibilityNodeInfo.ACTION_CLEAR_ACCESSIBILITY_FOCUS); info.addAction(AccessibilityNodeInfo.ACTION_CLEAR_ACCESSIBILITY_FOCUS); } } if (NumberPicker.this.isEnabled()) { if (getWrapSelectorWheel() || getValue() < getMaxValue()) { if (getWrapSelectorWheel() || getValue() < getMaxValue()) { info.addAction(AccessibilityNodeInfo.ACTION_SCROLL_FORWARD); info.addAction(AccessibilityNodeInfo.ACTION_SCROLL_FORWARD); } } if (getWrapSelectorWheel() || getValue() > getMinValue()) { if (getWrapSelectorWheel() || getValue() > getMinValue()) { info.addAction(AccessibilityNodeInfo.ACTION_SCROLL_BACKWARD); info.addAction(AccessibilityNodeInfo.ACTION_SCROLL_BACKWARD); } } } return info; return info; } } Loading Loading
core/java/android/view/View.java +2 −2 Original line number Original line Diff line number Diff line Loading @@ -4776,11 +4776,11 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal info.addAction(AccessibilityNodeInfo.ACTION_CLEAR_ACCESSIBILITY_FOCUS); info.addAction(AccessibilityNodeInfo.ACTION_CLEAR_ACCESSIBILITY_FOCUS); } } if (isClickable()) { if (isClickable() && isEnabled()) { info.addAction(AccessibilityNodeInfo.ACTION_CLICK); info.addAction(AccessibilityNodeInfo.ACTION_CLICK); } } if (isLongClickable()) { if (isLongClickable() && isEnabled()) { info.addAction(AccessibilityNodeInfo.ACTION_LONG_CLICK); info.addAction(AccessibilityNodeInfo.ACTION_LONG_CLICK); } } Loading
core/java/android/widget/AbsListView.java +31 −21 Original line number Original line Diff line number Diff line Loading @@ -1470,6 +1470,7 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) { public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) { super.onInitializeAccessibilityNodeInfo(info); super.onInitializeAccessibilityNodeInfo(info); info.setClassName(AbsListView.class.getName()); info.setClassName(AbsListView.class.getName()); if (isEnabled()) { if (getFirstVisiblePosition() > 0) { if (getFirstVisiblePosition() > 0) { info.addAction(AccessibilityNodeInfo.ACTION_SCROLL_BACKWARD); info.addAction(AccessibilityNodeInfo.ACTION_SCROLL_BACKWARD); } } Loading @@ -1477,6 +1478,7 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te info.addAction(AccessibilityNodeInfo.ACTION_SCROLL_FORWARD); info.addAction(AccessibilityNodeInfo.ACTION_SCROLL_FORWARD); } } } } } @Override @Override public boolean performAccessibilityAction(int action, Bundle arguments) { public boolean performAccessibilityAction(int action, Bundle arguments) { Loading @@ -1485,14 +1487,14 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te } } switch (action) { switch (action) { case AccessibilityNodeInfo.ACTION_SCROLL_FORWARD: { case AccessibilityNodeInfo.ACTION_SCROLL_FORWARD: { if (getLastVisiblePosition() < getCount() - 1) { if (isEnabled() && getLastVisiblePosition() < getCount() - 1) { final int viewportHeight = getHeight() - mListPadding.top - mListPadding.bottom; final int viewportHeight = getHeight() - mListPadding.top - mListPadding.bottom; smoothScrollBy(viewportHeight, PositionScroller.SCROLL_DURATION); smoothScrollBy(viewportHeight, PositionScroller.SCROLL_DURATION); return true; return true; } } } return false; } return false; case AccessibilityNodeInfo.ACTION_SCROLL_BACKWARD: { case AccessibilityNodeInfo.ACTION_SCROLL_BACKWARD: { if (mFirstPosition > 0) { if (isEnabled() && mFirstPosition > 0) { final int viewportHeight = getHeight() - mListPadding.top - mListPadding.bottom; final int viewportHeight = getHeight() - mListPadding.top - mListPadding.bottom; smoothScrollBy(-viewportHeight, PositionScroller.SCROLL_DURATION); smoothScrollBy(-viewportHeight, PositionScroller.SCROLL_DURATION); return true; return true; Loading Loading @@ -2294,17 +2296,19 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te return; return; } } if (isClickable()) { if (isClickable() && isEnabled()) { info.addAction(AccessibilityNodeInfo.ACTION_CLICK); info.addAction(AccessibilityNodeInfo.ACTION_CLICK); info.setClickable(true); info.setClickable(true); } } if (isLongClickable()) { if (isLongClickable() && isEnabled()) { info.addAction(AccessibilityNodeInfo.ACTION_LONG_CLICK); info.addAction(AccessibilityNodeInfo.ACTION_LONG_CLICK); info.setLongClickable(true); info.setLongClickable(true); } } if (isEnabled()) { info.addAction(AccessibilityNodeInfo.ACTION_SELECT); info.addAction(AccessibilityNodeInfo.ACTION_SELECT); } if (position == getSelectedItemPosition()) { if (position == getSelectedItemPosition()) { info.setSelected(true); info.setSelected(true); Loading @@ -2313,34 +2317,40 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te @Override @Override public boolean performAccessibilityAction(View host, int action, Bundle arguments) { public boolean performAccessibilityAction(View host, int action, Bundle arguments) { if (super.performAccessibilityAction(host, action, arguments)) { return true; } final int position = getPositionForView(host); final int position = getPositionForView(host); if (position == INVALID_POSITION) { if (position == INVALID_POSITION) { return false; return false; } } if (!isEnabled()) { return false; } final long id = getItemIdAtPosition(position); final long id = getItemIdAtPosition(position); switch (action) { switch (action) { case AccessibilityNodeInfo.ACTION_SELECT: case AccessibilityNodeInfo.ACTION_SELECT: { setSelection(position); setSelection(position); return true; return true; case AccessibilityNodeInfo.ACTION_CLICK: } if (!super.performAccessibilityAction(host, action, arguments)) { case AccessibilityNodeInfo.ACTION_CLICK: { if (isClickable()) { return performItemClick(host, position, id); return performItemClick(host, position, id); } } return true; } return false; case AccessibilityNodeInfo.ACTION_LONG_CLICK: case AccessibilityNodeInfo.ACTION_LONG_CLICK: { if (!super.performAccessibilityAction(host, action, arguments)) { if (isLongClickable()) { return performLongPress(host, position, id); return performLongPress(host, position, id); } } return true; } return false; case AccessibilityNodeInfo.ACTION_ACCESSIBILITY_FOCUS: smoothScrollToPosition(position); break; } } return super.performAccessibilityAction(host, action, arguments); return false; } } } } Loading
core/java/android/widget/Gallery.java +9 −7 Original line number Original line Diff line number Diff line Loading @@ -1369,13 +1369,15 @@ public class Gallery extends AbsSpinner implements GestureDetector.OnGestureList super.onInitializeAccessibilityNodeInfo(info); super.onInitializeAccessibilityNodeInfo(info); info.setClassName(Gallery.class.getName()); info.setClassName(Gallery.class.getName()); info.setScrollable(mItemCount > 1); info.setScrollable(mItemCount > 1); if (isEnabled()) { if (mItemCount > 0 && mSelectedPosition < mItemCount - 1) { if (mItemCount > 0 && mSelectedPosition < mItemCount - 1) { info.addAction(AccessibilityNodeInfo.ACTION_SCROLL_FORWARD); info.addAction(AccessibilityNodeInfo.ACTION_SCROLL_FORWARD); } } if (mItemCount > 0 && mSelectedPosition > 0) { if (isEnabled() && mItemCount > 0 && mSelectedPosition > 0) { info.addAction(AccessibilityNodeInfo.ACTION_SCROLL_BACKWARD); info.addAction(AccessibilityNodeInfo.ACTION_SCROLL_BACKWARD); } } } } } @Override @Override public boolean performAccessibilityAction(int action, Bundle arguments) { public boolean performAccessibilityAction(int action, Bundle arguments) { Loading @@ -1384,13 +1386,13 @@ public class Gallery extends AbsSpinner implements GestureDetector.OnGestureList } } switch (action) { switch (action) { case AccessibilityNodeInfo.ACTION_SCROLL_FORWARD: { case AccessibilityNodeInfo.ACTION_SCROLL_FORWARD: { if (mItemCount > 0 && mSelectedPosition < mItemCount - 1) { if (isEnabled() && mItemCount > 0 && mSelectedPosition < mItemCount - 1) { final int currentChildIndex = mSelectedPosition - mFirstPosition; final int currentChildIndex = mSelectedPosition - mFirstPosition; return scrollToChild(currentChildIndex + 1); return scrollToChild(currentChildIndex + 1); } } } return false; } return false; case AccessibilityNodeInfo.ACTION_SCROLL_BACKWARD: { case AccessibilityNodeInfo.ACTION_SCROLL_BACKWARD: { if (mItemCount > 0 && mSelectedPosition > 0) { if (isEnabled() && mItemCount > 0 && mSelectedPosition > 0) { final int currentChildIndex = mSelectedPosition - mFirstPosition; final int currentChildIndex = mSelectedPosition - mFirstPosition; return scrollToChild(currentChildIndex - 1); return scrollToChild(currentChildIndex - 1); } } Loading
core/java/android/widget/HorizontalScrollView.java +8 −2 Original line number Original line Diff line number Diff line Loading @@ -744,6 +744,9 @@ public class HorizontalScrollView extends FrameLayout { } } switch (action) { switch (action) { case AccessibilityNodeInfo.ACTION_SCROLL_FORWARD: { case AccessibilityNodeInfo.ACTION_SCROLL_FORWARD: { if (!isEnabled()) { return false; } final int viewportWidth = getWidth() - mPaddingLeft - mPaddingRight; final int viewportWidth = getWidth() - mPaddingLeft - mPaddingRight; final int targetScrollX = Math.min(mScrollX + viewportWidth, getScrollRange()); final int targetScrollX = Math.min(mScrollX + viewportWidth, getScrollRange()); if (targetScrollX != mScrollX) { if (targetScrollX != mScrollX) { Loading @@ -752,6 +755,9 @@ public class HorizontalScrollView extends FrameLayout { } } } return false; } return false; case AccessibilityNodeInfo.ACTION_SCROLL_BACKWARD: { case AccessibilityNodeInfo.ACTION_SCROLL_BACKWARD: { if (!isEnabled()) { return false; } final int viewportWidth = getWidth() - mPaddingLeft - mPaddingRight; final int viewportWidth = getWidth() - mPaddingLeft - mPaddingRight; final int targetScrollX = Math.max(0, mScrollX - viewportWidth); final int targetScrollX = Math.max(0, mScrollX - viewportWidth); if (targetScrollX != mScrollX) { if (targetScrollX != mScrollX) { Loading @@ -770,10 +776,10 @@ public class HorizontalScrollView extends FrameLayout { final int scrollRange = getScrollRange(); final int scrollRange = getScrollRange(); if (scrollRange > 0) { if (scrollRange > 0) { info.setScrollable(true); info.setScrollable(true); if (mScrollX > 0) { if (isEnabled() && mScrollX > 0) { info.addAction(AccessibilityNodeInfo.ACTION_SCROLL_BACKWARD); info.addAction(AccessibilityNodeInfo.ACTION_SCROLL_BACKWARD); } } if (mScrollX < scrollRange) { if (isEnabled() && mScrollX < scrollRange) { info.addAction(AccessibilityNodeInfo.ACTION_SCROLL_FORWARD); info.addAction(AccessibilityNodeInfo.ACTION_SCROLL_FORWARD); } } } } Loading
core/java/android/widget/NumberPicker.java +36 −21 Original line number Original line Diff line number Diff line Loading @@ -2173,13 +2173,15 @@ public class NumberPicker extends LinearLayout { return false; return false; } } case AccessibilityNodeInfo.ACTION_SCROLL_FORWARD: { case AccessibilityNodeInfo.ACTION_SCROLL_FORWARD: { if (getWrapSelectorWheel() || getValue() < getMaxValue()) { if (NumberPicker.this.isEnabled() && (getWrapSelectorWheel() || getValue() < getMaxValue())) { changeValueByOne(true); changeValueByOne(true); return true; return true; } } } return false; } return false; case AccessibilityNodeInfo.ACTION_SCROLL_BACKWARD: { case AccessibilityNodeInfo.ACTION_SCROLL_BACKWARD: { if (getWrapSelectorWheel() || getValue() > getMinValue()) { if (NumberPicker.this.isEnabled() && (getWrapSelectorWheel() || getValue() > getMinValue())) { changeValueByOne(false); changeValueByOne(false); return true; return true; } } Loading @@ -2189,21 +2191,24 @@ public class NumberPicker extends LinearLayout { case VIRTUAL_VIEW_ID_INPUT: { case VIRTUAL_VIEW_ID_INPUT: { switch (action) { switch (action) { case AccessibilityNodeInfo.ACTION_FOCUS: { case AccessibilityNodeInfo.ACTION_FOCUS: { if (!mInputText.isFocused()) { if (NumberPicker.this.isEnabled() && !mInputText.isFocused()) { return mInputText.requestFocus(); return mInputText.requestFocus(); } } } break; } break; case AccessibilityNodeInfo.ACTION_CLEAR_FOCUS: { case AccessibilityNodeInfo.ACTION_CLEAR_FOCUS: { if (mInputText.isFocused()) { if (NumberPicker.this.isEnabled() && mInputText.isFocused()) { mInputText.clearFocus(); mInputText.clearFocus(); return true; return true; } } return false; return false; } } case AccessibilityNodeInfo.ACTION_CLICK: { case AccessibilityNodeInfo.ACTION_CLICK: { if (NumberPicker.this.isEnabled()) { showSoftInput(); showSoftInput(); return true; return true; } } return false; } case AccessibilityNodeInfo.ACTION_ACCESSIBILITY_FOCUS: { case AccessibilityNodeInfo.ACTION_ACCESSIBILITY_FOCUS: { if (mAccessibilityFocusedView != virtualViewId) { if (mAccessibilityFocusedView != virtualViewId) { mAccessibilityFocusedView = virtualViewId; mAccessibilityFocusedView = virtualViewId; Loading @@ -2230,10 +2235,13 @@ public class NumberPicker extends LinearLayout { case VIRTUAL_VIEW_ID_INCREMENT: { case VIRTUAL_VIEW_ID_INCREMENT: { switch (action) { switch (action) { case AccessibilityNodeInfo.ACTION_CLICK: { case AccessibilityNodeInfo.ACTION_CLICK: { if (NumberPicker.this.isEnabled()) { NumberPicker.this.changeValueByOne(true); NumberPicker.this.changeValueByOne(true); sendAccessibilityEventForVirtualView(virtualViewId, sendAccessibilityEventForVirtualView(virtualViewId, AccessibilityEvent.TYPE_VIEW_CLICKED); AccessibilityEvent.TYPE_VIEW_CLICKED); } return true; return true; } } return false; case AccessibilityNodeInfo.ACTION_ACCESSIBILITY_FOCUS: { case AccessibilityNodeInfo.ACTION_ACCESSIBILITY_FOCUS: { if (mAccessibilityFocusedView != virtualViewId) { if (mAccessibilityFocusedView != virtualViewId) { mAccessibilityFocusedView = virtualViewId; mAccessibilityFocusedView = virtualViewId; Loading @@ -2257,11 +2265,14 @@ public class NumberPicker extends LinearLayout { case VIRTUAL_VIEW_ID_DECREMENT: { case VIRTUAL_VIEW_ID_DECREMENT: { switch (action) { switch (action) { case AccessibilityNodeInfo.ACTION_CLICK: { case AccessibilityNodeInfo.ACTION_CLICK: { if (NumberPicker.this.isEnabled()) { final boolean increment = (virtualViewId == VIRTUAL_VIEW_ID_INCREMENT); final boolean increment = (virtualViewId == VIRTUAL_VIEW_ID_INCREMENT); NumberPicker.this.changeValueByOne(increment); NumberPicker.this.changeValueByOne(increment); sendAccessibilityEventForVirtualView(virtualViewId, sendAccessibilityEventForVirtualView(virtualViewId, AccessibilityEvent.TYPE_VIEW_CLICKED); AccessibilityEvent.TYPE_VIEW_CLICKED); } return true; return true; } } return false; case AccessibilityNodeInfo.ACTION_ACCESSIBILITY_FOCUS: { case AccessibilityNodeInfo.ACTION_ACCESSIBILITY_FOCUS: { if (mAccessibilityFocusedView != virtualViewId) { if (mAccessibilityFocusedView != virtualViewId) { mAccessibilityFocusedView = virtualViewId; mAccessibilityFocusedView = virtualViewId; Loading Loading @@ -2470,7 +2481,9 @@ public class NumberPicker extends LinearLayout { if (mAccessibilityFocusedView == virtualViewId) { if (mAccessibilityFocusedView == virtualViewId) { info.addAction(AccessibilityNodeInfo.ACTION_CLEAR_ACCESSIBILITY_FOCUS); info.addAction(AccessibilityNodeInfo.ACTION_CLEAR_ACCESSIBILITY_FOCUS); } } if (NumberPicker.this.isEnabled()) { info.addAction(AccessibilityNodeInfo.ACTION_CLICK); info.addAction(AccessibilityNodeInfo.ACTION_CLICK); } return info; return info; } } Loading Loading @@ -2509,12 +2522,14 @@ public class NumberPicker extends LinearLayout { if (mAccessibilityFocusedView == View.NO_ID) { if (mAccessibilityFocusedView == View.NO_ID) { info.addAction(AccessibilityNodeInfo.ACTION_CLEAR_ACCESSIBILITY_FOCUS); info.addAction(AccessibilityNodeInfo.ACTION_CLEAR_ACCESSIBILITY_FOCUS); } } if (NumberPicker.this.isEnabled()) { if (getWrapSelectorWheel() || getValue() < getMaxValue()) { if (getWrapSelectorWheel() || getValue() < getMaxValue()) { info.addAction(AccessibilityNodeInfo.ACTION_SCROLL_FORWARD); info.addAction(AccessibilityNodeInfo.ACTION_SCROLL_FORWARD); } } if (getWrapSelectorWheel() || getValue() > getMinValue()) { if (getWrapSelectorWheel() || getValue() > getMinValue()) { info.addAction(AccessibilityNodeInfo.ACTION_SCROLL_BACKWARD); info.addAction(AccessibilityNodeInfo.ACTION_SCROLL_BACKWARD); } } } return info; return info; } } Loading