Don't invalidate list data during layout.
When a FastScroller is enabled, we were invalidating the list data during layout, which left the UI in a bad state. Long-presses didn't work properly, and TalkBack touches were impossible to perform. Bug: 31160338 Test: Manually tested long pressing, and verified that TalkBack now works with the TestActivity in ag/1567328. Change-Id: Iecd2d597259748a3ecbf5573950e565a0e9faa42
This commit is contained in:
@@ -2160,7 +2160,6 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te
|
|||||||
}
|
}
|
||||||
|
|
||||||
layoutChildren();
|
layoutChildren();
|
||||||
mInLayout = false;
|
|
||||||
|
|
||||||
mOverscrollMax = (b - t) / OVERSCROLL_LIMIT_DIVISOR;
|
mOverscrollMax = (b - t) / OVERSCROLL_LIMIT_DIVISOR;
|
||||||
|
|
||||||
@@ -2168,6 +2167,7 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te
|
|||||||
if (mFastScroll != null) {
|
if (mFastScroll != null) {
|
||||||
mFastScroll.onItemCountChanged(getChildCount(), mItemCount);
|
mFastScroll.onItemCountChanged(getChildCount(), mItemCount);
|
||||||
}
|
}
|
||||||
|
mInLayout = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -2697,6 +2697,9 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te
|
|||||||
* fail to relayout them properly to accommodate for new bounds.
|
* fail to relayout them properly to accommodate for new bounds.
|
||||||
*/
|
*/
|
||||||
void handleBoundsChange() {
|
void handleBoundsChange() {
|
||||||
|
if (mInLayout) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
final int childCount = getChildCount();
|
final int childCount = getChildCount();
|
||||||
if (childCount > 0) {
|
if (childCount > 0) {
|
||||||
mDataChanged = true;
|
mDataChanged = true;
|
||||||
|
|||||||
Reference in New Issue
Block a user