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
(cherry picked from commit 2112742be6)
This commit is contained in:
@@ -2168,7 +2168,6 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te
|
||||
}
|
||||
|
||||
layoutChildren();
|
||||
mInLayout = false;
|
||||
|
||||
mOverscrollMax = (b - t) / OVERSCROLL_LIMIT_DIVISOR;
|
||||
|
||||
@@ -2176,6 +2175,7 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te
|
||||
if (mFastScroll != null) {
|
||||
mFastScroll.onItemCountChanged(getChildCount(), mItemCount);
|
||||
}
|
||||
mInLayout = false;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -2705,6 +2705,9 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te
|
||||
* fail to relayout them properly to accommodate for new bounds.
|
||||
*/
|
||||
void handleBoundsChange() {
|
||||
if (mInLayout) {
|
||||
return;
|
||||
}
|
||||
final int childCount = getChildCount();
|
||||
if (childCount > 0) {
|
||||
mDataChanged = true;
|
||||
|
||||
Reference in New Issue
Block a user