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