Merge "Restore force relayout logic for apps targeting < R" into rvc-dev am: 98f012c304
Change-Id: I53617d5f35e00cf69dd4e22cb8f5477cbe448ca1
This commit is contained in:
@@ -981,6 +981,13 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
|
|||||||
*/
|
*/
|
||||||
protected static boolean sBrokenWindowBackground;
|
protected static boolean sBrokenWindowBackground;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Prior to R, we were always forcing a layout of the entire hierarchy when insets changed from
|
||||||
|
* the server. This is inefficient and not all apps use it. Instead, we want to rely on apps
|
||||||
|
* calling {@link #requestLayout} when they need to relayout based on an insets change.
|
||||||
|
*/
|
||||||
|
static boolean sForceLayoutWhenInsetsChanged;
|
||||||
|
|
||||||
/** @hide */
|
/** @hide */
|
||||||
@IntDef({NOT_FOCUSABLE, FOCUSABLE, FOCUSABLE_AUTO})
|
@IntDef({NOT_FOCUSABLE, FOCUSABLE, FOCUSABLE_AUTO})
|
||||||
@Retention(RetentionPolicy.SOURCE)
|
@Retention(RetentionPolicy.SOURCE)
|
||||||
@@ -5375,6 +5382,9 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
|
|||||||
|
|
||||||
GradientDrawable.sWrapNegativeAngleMeasurements =
|
GradientDrawable.sWrapNegativeAngleMeasurements =
|
||||||
targetSdkVersion >= Build.VERSION_CODES.Q;
|
targetSdkVersion >= Build.VERSION_CODES.Q;
|
||||||
|
|
||||||
|
sForceLayoutWhenInsetsChanged = targetSdkVersion < Build.VERSION_CODES.R;
|
||||||
|
|
||||||
sCompatibilityDone = true;
|
sCompatibilityDone = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1584,6 +1584,11 @@ public final class ViewRootImpl implements ViewParent,
|
|||||||
mApplyInsetsRequested = true;
|
mApplyInsetsRequested = true;
|
||||||
requestLayout();
|
requestLayout();
|
||||||
|
|
||||||
|
// See comment for View.sForceLayoutWhenInsetsChanged
|
||||||
|
if (View.sForceLayoutWhenInsetsChanged && mView != null) {
|
||||||
|
forceLayout(mView);
|
||||||
|
}
|
||||||
|
|
||||||
// If this changes during traversal, no need to schedule another one as it will dispatch it
|
// If this changes during traversal, no need to schedule another one as it will dispatch it
|
||||||
// during the current traversal.
|
// during the current traversal.
|
||||||
if (!mIsInTraversal) {
|
if (!mIsInTraversal) {
|
||||||
|
|||||||
Reference in New Issue
Block a user