Target API check for margin params fix
am: 2dd20a61e9
Change-Id: I745d44946585e08143e76b7d9da1a7302b4d66b9
This commit is contained in:
@@ -820,6 +820,17 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
|
||||
*/
|
||||
static boolean sTextureViewIgnoresDrawableSetters = false;
|
||||
|
||||
/**
|
||||
* Prior to N, some ViewGroups would not convert LayoutParams properly even though both extend
|
||||
* MarginLayoutParams. For instance, converting LinearLayout.LayoutParams to
|
||||
* RelativeLayout.LayoutParams would lose margin information. This is fixed on N but target API
|
||||
* check is implemented for backwards compatibility.
|
||||
*
|
||||
* {@hide}
|
||||
*/
|
||||
protected static boolean sPreserveMarginParamsInLayoutParamConversion;
|
||||
|
||||
|
||||
/**
|
||||
* This view does not want keystrokes. Use with TAKES_FOCUS_MASK when
|
||||
* calling setFlags.
|
||||
@@ -4052,6 +4063,10 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
|
||||
// On N+, we throw, but that breaks compatibility with apps that use these methods.
|
||||
sTextureViewIgnoresDrawableSetters = targetSdkVersion <= M;
|
||||
|
||||
// Prior to N, we would drop margins in LayoutParam conversions. The fix triggers bugs
|
||||
// in apps so we target check it to avoid breaking existing apps.
|
||||
sPreserveMarginParamsInLayoutParamConversion = targetSdkVersion >= N;
|
||||
|
||||
sCompatibilityDone = true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -382,13 +382,14 @@ public class FrameLayout extends ViewGroup {
|
||||
|
||||
@Override
|
||||
protected ViewGroup.LayoutParams generateLayoutParams(ViewGroup.LayoutParams lp) {
|
||||
if (lp instanceof LayoutParams) {
|
||||
return new LayoutParams((LayoutParams) lp);
|
||||
} else if (lp instanceof MarginLayoutParams) {
|
||||
return new LayoutParams((MarginLayoutParams) lp);
|
||||
} else {
|
||||
return new LayoutParams(lp);
|
||||
if (sPreserveMarginParamsInLayoutParamConversion) {
|
||||
if (lp instanceof LayoutParams) {
|
||||
return new LayoutParams((LayoutParams) lp);
|
||||
} else if (lp instanceof MarginLayoutParams) {
|
||||
return new LayoutParams((MarginLayoutParams) lp);
|
||||
}
|
||||
}
|
||||
return new LayoutParams(lp);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -868,13 +868,14 @@ public class GridLayout extends ViewGroup {
|
||||
|
||||
@Override
|
||||
protected LayoutParams generateLayoutParams(ViewGroup.LayoutParams lp) {
|
||||
if (lp instanceof LayoutParams) {
|
||||
return new LayoutParams((LayoutParams) lp);
|
||||
} else if (lp instanceof MarginLayoutParams) {
|
||||
return new LayoutParams((MarginLayoutParams) lp);
|
||||
} else {
|
||||
return new LayoutParams(lp);
|
||||
if (sPreserveMarginParamsInLayoutParamConversion) {
|
||||
if (lp instanceof LayoutParams) {
|
||||
return new LayoutParams((LayoutParams) lp);
|
||||
} else if (lp instanceof MarginLayoutParams) {
|
||||
return new LayoutParams((MarginLayoutParams) lp);
|
||||
}
|
||||
}
|
||||
return new LayoutParams(lp);
|
||||
}
|
||||
|
||||
// Draw grid
|
||||
|
||||
@@ -1844,13 +1844,14 @@ public class LinearLayout extends ViewGroup {
|
||||
|
||||
@Override
|
||||
protected LayoutParams generateLayoutParams(ViewGroup.LayoutParams lp) {
|
||||
if (lp instanceof LayoutParams) {
|
||||
return new LayoutParams((LayoutParams) lp);
|
||||
} else if (lp instanceof MarginLayoutParams) {
|
||||
return new LayoutParams((MarginLayoutParams) lp);
|
||||
} else {
|
||||
return new LayoutParams(lp);
|
||||
if (sPreserveMarginParamsInLayoutParamConversion) {
|
||||
if (lp instanceof LayoutParams) {
|
||||
return new LayoutParams((LayoutParams) lp);
|
||||
} else if (lp instanceof MarginLayoutParams) {
|
||||
return new LayoutParams((MarginLayoutParams) lp);
|
||||
}
|
||||
}
|
||||
return new LayoutParams(lp);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1104,13 +1104,14 @@ public class RelativeLayout extends ViewGroup {
|
||||
|
||||
@Override
|
||||
protected ViewGroup.LayoutParams generateLayoutParams(ViewGroup.LayoutParams lp) {
|
||||
if (lp instanceof LayoutParams) {
|
||||
return new LayoutParams((LayoutParams) lp);
|
||||
} else if (lp instanceof MarginLayoutParams) {
|
||||
return new LayoutParams((MarginLayoutParams) lp);
|
||||
} else {
|
||||
return new LayoutParams(lp);
|
||||
if (sPreserveMarginParamsInLayoutParamConversion) {
|
||||
if (lp instanceof LayoutParams) {
|
||||
return new LayoutParams((LayoutParams) lp);
|
||||
} else if (lp instanceof MarginLayoutParams) {
|
||||
return new LayoutParams((MarginLayoutParams) lp);
|
||||
}
|
||||
}
|
||||
return new LayoutParams(lp);
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
|
||||
Reference in New Issue
Block a user