Merge "Revert "NumberPicker a11y (and a11y-inspired) fixes"" into oc-dev
am: ed83139842
Change-Id: I7721cfee4ef04aa463a687b8223f881e9d153394
This commit is contained in:
@@ -618,8 +618,7 @@ public final class AccessibilityEvent extends AccessibilityRecord implements Par
|
|||||||
public static final int TYPE_WINDOW_CONTENT_CHANGED = 0x00000800;
|
public static final int TYPE_WINDOW_CONTENT_CHANGED = 0x00000800;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents the event of scrolling a view. This event type is generally not sent directly.
|
* Represents the event of scrolling a view.
|
||||||
* @see View#onScrollChanged(int, int, int, int)
|
|
||||||
*/
|
*/
|
||||||
public static final int TYPE_VIEW_SCROLLED = 0x00001000;
|
public static final int TYPE_VIEW_SCROLLED = 0x00001000;
|
||||||
|
|
||||||
|
|||||||
@@ -737,7 +737,6 @@ public class NumberPicker extends LinearLayout {
|
|||||||
mInputText.setFilters(new InputFilter[] {
|
mInputText.setFilters(new InputFilter[] {
|
||||||
new InputTextFilter()
|
new InputTextFilter()
|
||||||
});
|
});
|
||||||
mInputText.setAccessibilityLiveRegion(View.ACCESSIBILITY_LIVE_REGION_POLITE);
|
|
||||||
|
|
||||||
mInputText.setRawInputType(InputType.TYPE_CLASS_NUMBER);
|
mInputText.setRawInputType(InputType.TYPE_CLASS_NUMBER);
|
||||||
mInputText.setImeOptions(EditorInfo.IME_ACTION_DONE);
|
mInputText.setImeOptions(EditorInfo.IME_ACTION_DONE);
|
||||||
@@ -771,12 +770,6 @@ public class NumberPicker extends LinearLayout {
|
|||||||
if (getImportantForAccessibility() == IMPORTANT_FOR_ACCESSIBILITY_AUTO) {
|
if (getImportantForAccessibility() == IMPORTANT_FOR_ACCESSIBILITY_AUTO) {
|
||||||
setImportantForAccessibility(IMPORTANT_FOR_ACCESSIBILITY_YES);
|
setImportantForAccessibility(IMPORTANT_FOR_ACCESSIBILITY_YES);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Should be focusable by default, as the text view whose visibility changes is focusable
|
|
||||||
if (getFocusable() == View.FOCUSABLE_AUTO) {
|
|
||||||
setFocusable(View.FOCUSABLE);
|
|
||||||
setFocusableInTouchMode(true);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -863,7 +856,7 @@ public class NumberPicker extends LinearLayout {
|
|||||||
switch (action) {
|
switch (action) {
|
||||||
case MotionEvent.ACTION_DOWN: {
|
case MotionEvent.ACTION_DOWN: {
|
||||||
removeAllCallbacks();
|
removeAllCallbacks();
|
||||||
hideSoftInput();
|
mInputText.setVisibility(View.INVISIBLE);
|
||||||
mLastDownOrMoveEventY = mLastDownEventY = event.getY();
|
mLastDownOrMoveEventY = mLastDownEventY = event.getY();
|
||||||
mLastDownEventTime = event.getEventTime();
|
mLastDownEventTime = event.getEventTime();
|
||||||
mIgnoreMoveEvents = false;
|
mIgnoreMoveEvents = false;
|
||||||
@@ -890,9 +883,11 @@ public class NumberPicker extends LinearLayout {
|
|||||||
mFlingScroller.forceFinished(true);
|
mFlingScroller.forceFinished(true);
|
||||||
mAdjustScroller.forceFinished(true);
|
mAdjustScroller.forceFinished(true);
|
||||||
} else if (mLastDownEventY < mTopSelectionDividerTop) {
|
} else if (mLastDownEventY < mTopSelectionDividerTop) {
|
||||||
|
hideSoftInput();
|
||||||
postChangeCurrentByOneFromLongPress(
|
postChangeCurrentByOneFromLongPress(
|
||||||
false, ViewConfiguration.getLongPressTimeout());
|
false, ViewConfiguration.getLongPressTimeout());
|
||||||
} else if (mLastDownEventY > mBottomSelectionDividerBottom) {
|
} else if (mLastDownEventY > mBottomSelectionDividerBottom) {
|
||||||
|
hideSoftInput();
|
||||||
postChangeCurrentByOneFromLongPress(
|
postChangeCurrentByOneFromLongPress(
|
||||||
true, ViewConfiguration.getLongPressTimeout());
|
true, ViewConfiguration.getLongPressTimeout());
|
||||||
} else {
|
} else {
|
||||||
@@ -1125,7 +1120,6 @@ public class NumberPicker extends LinearLayout {
|
|||||||
@Override
|
@Override
|
||||||
public void scrollBy(int x, int y) {
|
public void scrollBy(int x, int y) {
|
||||||
int[] selectorIndices = mSelectorIndices;
|
int[] selectorIndices = mSelectorIndices;
|
||||||
int startScrollOffset = mCurrentScrollOffset;
|
|
||||||
if (!mWrapSelectorWheel && y > 0
|
if (!mWrapSelectorWheel && y > 0
|
||||||
&& selectorIndices[SELECTOR_MIDDLE_ITEM_INDEX] <= mMinValue) {
|
&& selectorIndices[SELECTOR_MIDDLE_ITEM_INDEX] <= mMinValue) {
|
||||||
mCurrentScrollOffset = mInitialScrollOffset;
|
mCurrentScrollOffset = mInitialScrollOffset;
|
||||||
@@ -1153,9 +1147,6 @@ public class NumberPicker extends LinearLayout {
|
|||||||
mCurrentScrollOffset = mInitialScrollOffset;
|
mCurrentScrollOffset = mInitialScrollOffset;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (startScrollOffset != mCurrentScrollOffset) {
|
|
||||||
onScrollChanged(0, mCurrentScrollOffset, 0, startScrollOffset);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -1744,10 +1735,7 @@ public class NumberPicker extends LinearLayout {
|
|||||||
}
|
}
|
||||||
int previous = mValue;
|
int previous = mValue;
|
||||||
mValue = current;
|
mValue = current;
|
||||||
// If we're flinging, we'll update the text view at the end when it becomes visible
|
updateInputTextView();
|
||||||
if (mScrollState != OnScrollListener.SCROLL_STATE_FLING) {
|
|
||||||
updateInputTextView();
|
|
||||||
}
|
|
||||||
if (notifyChange) {
|
if (notifyChange) {
|
||||||
notifyChange(previous, current);
|
notifyChange(previous, current);
|
||||||
}
|
}
|
||||||
@@ -1764,7 +1752,7 @@ public class NumberPicker extends LinearLayout {
|
|||||||
*/
|
*/
|
||||||
private void changeValueByOne(boolean increment) {
|
private void changeValueByOne(boolean increment) {
|
||||||
if (mHasSelectorWheel) {
|
if (mHasSelectorWheel) {
|
||||||
hideSoftInput();
|
mInputText.setVisibility(View.INVISIBLE);
|
||||||
if (!moveToFinalScrollerPosition(mFlingScroller)) {
|
if (!moveToFinalScrollerPosition(mFlingScroller)) {
|
||||||
moveToFinalScrollerPosition(mAdjustScroller);
|
moveToFinalScrollerPosition(mAdjustScroller);
|
||||||
}
|
}
|
||||||
@@ -1811,8 +1799,9 @@ public class NumberPicker extends LinearLayout {
|
|||||||
*/
|
*/
|
||||||
private void onScrollerFinished(Scroller scroller) {
|
private void onScrollerFinished(Scroller scroller) {
|
||||||
if (scroller == mFlingScroller) {
|
if (scroller == mFlingScroller) {
|
||||||
ensureScrollWheelAdjusted();
|
if (!ensureScrollWheelAdjusted()) {
|
||||||
updateInputTextView();
|
updateInputTextView();
|
||||||
|
}
|
||||||
onScrollStateChange(OnScrollListener.SCROLL_STATE_IDLE);
|
onScrollStateChange(OnScrollListener.SCROLL_STATE_IDLE);
|
||||||
} else {
|
} else {
|
||||||
if (mScrollState != OnScrollListener.SCROLL_STATE_TOUCH_SCROLL) {
|
if (mScrollState != OnScrollListener.SCROLL_STATE_TOUCH_SCROLL) {
|
||||||
@@ -1948,25 +1937,9 @@ public class NumberPicker extends LinearLayout {
|
|||||||
*/
|
*/
|
||||||
String text = (mDisplayedValues == null) ? formatNumber(mValue)
|
String text = (mDisplayedValues == null) ? formatNumber(mValue)
|
||||||
: mDisplayedValues[mValue - mMinValue];
|
: mDisplayedValues[mValue - mMinValue];
|
||||||
if (!TextUtils.isEmpty(text)) {
|
if (!TextUtils.isEmpty(text) && !text.equals(mInputText.getText().toString())) {
|
||||||
CharSequence beforeText = mInputText.getText();
|
mInputText.setText(text);
|
||||||
if (!text.equals(beforeText.toString())) {
|
return true;
|
||||||
mInputText.setText(text);
|
|
||||||
if (mAccessibilityNodeProvider != null) {
|
|
||||||
AccessibilityEvent event = AccessibilityEvent.obtain(
|
|
||||||
AccessibilityEvent.TYPE_VIEW_TEXT_CHANGED);
|
|
||||||
mInputText.onInitializeAccessibilityEvent(event);
|
|
||||||
mInputText.onPopulateAccessibilityEvent(event);
|
|
||||||
event.setFromIndex(0);
|
|
||||||
event.setRemovedCount(beforeText.length());
|
|
||||||
event.setAddedCount(text.length());
|
|
||||||
event.setBeforeText(beforeText);
|
|
||||||
event.setSource(NumberPicker.this,
|
|
||||||
AccessibilityNodeProviderImpl.VIRTUAL_VIEW_ID_INPUT);
|
|
||||||
requestSendAccessibilityEvent(NumberPicker.this, event);
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
Reference in New Issue
Block a user