diff options
Diffstat (limited to 'core/java')
-rw-r--r-- | core/java/android/app/ActionBar.java | 12 | ||||
-rw-r--r-- | core/java/android/view/ViewGroup.java | 14 | ||||
-rw-r--r-- | core/java/android/widget/Toolbar.java | 7 |
3 files changed, 30 insertions, 3 deletions
diff --git a/core/java/android/app/ActionBar.java b/core/java/android/app/ActionBar.java index 628875f..5c98180 100644 --- a/core/java/android/app/ActionBar.java +++ b/core/java/android/app/ActionBar.java @@ -1334,8 +1334,14 @@ public abstract class ActionBar { super(source); } - public LayoutParams(MarginLayoutParams source) { - super(source); - } + /* + * Note for framework developers: + * + * You might notice that ActionBar.LayoutParams is missing a constructor overload + * for MarginLayoutParams. While it may seem like a good idea to add one, at this + * point it's dangerous for source compatibility. Upon building against a new + * version of the SDK an app can end up statically linking to the new MarginLayoutParams + * overload, causing a crash when running on older platform versions with no other changes. + */ } } diff --git a/core/java/android/view/ViewGroup.java b/core/java/android/view/ViewGroup.java index 28e8bd6..36e5996 100644 --- a/core/java/android/view/ViewGroup.java +++ b/core/java/android/view/ViewGroup.java @@ -6476,6 +6476,20 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager } /** + * @hide Used internally. + */ + public final void copyMarginsFrom(MarginLayoutParams source) { + this.leftMargin = source.leftMargin; + this.topMargin = source.topMargin; + this.rightMargin = source.rightMargin; + this.bottomMargin = source.bottomMargin; + this.startMargin = source.startMargin; + this.endMargin = source.endMargin; + + this.mMarginFlags = source.mMarginFlags; + } + + /** * Sets the margins, in pixels. A call to {@link android.view.View#requestLayout()} needs * to be done so that the new margins are taken into account. Left and right margins may be * overriden by {@link android.view.View#requestLayout()} depending on layout direction. diff --git a/core/java/android/widget/Toolbar.java b/core/java/android/widget/Toolbar.java index 122df2c..d140c82 100644 --- a/core/java/android/widget/Toolbar.java +++ b/core/java/android/widget/Toolbar.java @@ -1585,6 +1585,10 @@ public class Toolbar extends ViewGroup { /** * Layout information for child views of Toolbars. * + * <p>Toolbar.LayoutParams extends ActionBar.LayoutParams for compatibility with existing + * ActionBar API. See {@link android.app.Activity#setActionBar(Toolbar) Activity.setActionBar} + * for more info on how to use a Toolbar as your Activity's ActionBar.</p> + * * @attr ref android.R.styleable#Toolbar_LayoutParams_layout_gravity */ public static class LayoutParams extends ActionBar.LayoutParams { @@ -1624,6 +1628,9 @@ public class Toolbar extends ViewGroup { public LayoutParams(MarginLayoutParams source) { super(source); + // ActionBar.LayoutParams doesn't have a MarginLayoutParams constructor. + // Fake it here and copy over the relevant data. + copyMarginsFrom(source); } public LayoutParams(ViewGroup.LayoutParams source) { |