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();
|
||||
mInLayout = false;
|
||||
|
||||
mOverscrollMax = (b - t) / OVERSCROLL_LIMIT_DIVISOR;
|
||||
|
||||
@@ -2168,6 +2167,7 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te
|
||||
if (mFastScroll != null) {
|
||||
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.
|
||||
*/
|
||||
void handleBoundsChange() {
|
||||
if (mInLayout) {
|
||||
return;
|
||||
}
|
||||
final int childCount = getChildCount();
|
||||
if (childCount > 0) {
|
||||
mDataChanged = true;
|
||||
|
||||
Reference in New Issue
Block a user