summaryrefslogtreecommitdiffstats
path: root/core/java
diff options
context:
space:
mode:
Diffstat (limited to 'core/java')
-rw-r--r--core/java/android/app/ActionBar.java12
-rw-r--r--core/java/android/view/ViewGroup.java14
-rw-r--r--core/java/android/widget/Toolbar.java7
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) {