diff --git a/api/current.xml b/api/current.xml index 3931e9e60c052..a5fec5110b336 100644 --- a/api/current.xml +++ b/api/current.xml @@ -6785,6 +6785,17 @@ visibility="public" > + + + + + + + + + + + + + + + + start inflating children"); } // Inflate all children under temp - rInflate(parser, temp, attrs); + rInflate(parser, temp, attrs, true); if (DEBUG) { System.out.println("-----> done inflating children"); } @@ -590,8 +590,8 @@ public abstract class LayoutInflater { * Recursive method used to descend down the xml hierarchy and instantiate * views, instantiate their children, and then call onFinishInflate(). */ - private void rInflate(XmlPullParser parser, View parent, final AttributeSet attrs) - throws XmlPullParserException, IOException { + private void rInflate(XmlPullParser parser, View parent, final AttributeSet attrs, + boolean finishInflate) throws XmlPullParserException, IOException { final int depth = parser.getDepth(); int type; @@ -618,12 +618,12 @@ public abstract class LayoutInflater { final View view = createViewFromTag(name, attrs); final ViewGroup viewGroup = (ViewGroup) parent; final ViewGroup.LayoutParams params = viewGroup.generateLayoutParams(attrs); - rInflate(parser, view, attrs); + rInflate(parser, view, attrs, true); viewGroup.addView(view, params); } } - parent.onFinishInflate(); + if (finishInflate) parent.onFinishInflate(); } private void parseRequestFocus(XmlPullParser parser, View parent) @@ -674,7 +674,7 @@ public abstract class LayoutInflater { if (TAG_MERGE.equals(childName)) { // Inflate all children. - rInflate(childParser, parent, childAttrs); + rInflate(childParser, parent, childAttrs, false); } else { final View view = createViewFromTag(childName, childAttrs); final ViewGroup group = (ViewGroup) parent; @@ -699,7 +699,7 @@ public abstract class LayoutInflater { } // Inflate all children. - rInflate(childParser, view, childAttrs); + rInflate(childParser, view, childAttrs, true); // Attempt to override the included layout's android:id with the // one set on the tag itself. diff --git a/core/java/android/widget/LinearLayout.java b/core/java/android/widget/LinearLayout.java index bd07e1f54ffae..7254c3cfd3594 100644 --- a/core/java/android/widget/LinearLayout.java +++ b/core/java/android/widget/LinearLayout.java @@ -40,6 +40,13 @@ import android.widget.RemoteViews.RemoteView; *

* Also see {@link LinearLayout.LayoutParams android.widget.LinearLayout.LayoutParams} * for layout attributes

+ * + * @attr ref android.R.styleable#LinearLayout_baselineAligned + * @attr ref android.R.styleable#LinearLayout_baselineAlignedChildIndex + * @attr ref android.R.styleable#LinearLayout_gravity + * @attr ref android.R.styleable#LinearLayout_measureWithLargestChild + * @attr ref android.R.styleable#LinearLayout_orientation + * @attr ref android.R.styleable#LinearLayout_weightSum */ @RemoteView public class LinearLayout extends ViewGroup { @@ -112,7 +119,11 @@ public class LinearLayout extends ViewGroup { } public LinearLayout(Context context, AttributeSet attrs) { - super(context, attrs); + this(context, attrs, 0); + } + + public LinearLayout(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); TypedArray a = context.obtainStyledAttributes(attrs, com.android.internal.R.styleable.LinearLayout); @@ -137,8 +148,7 @@ public class LinearLayout extends ViewGroup { mBaselineAlignedChildIndex = a.getInt(com.android.internal.R.styleable.LinearLayout_baselineAlignedChildIndex, -1); - // TODO: Better name, add Java APIs, make it public - mUseLargestChild = a.getBoolean(R.styleable.LinearLayout_useLargestChild, false); + mUseLargestChild = a.getBoolean(R.styleable.LinearLayout_measureWithLargestChild, false); a.recycle(); } @@ -167,6 +177,33 @@ public class LinearLayout extends ViewGroup { mBaselineAligned = baselineAligned; } + /** + * When true, all children with a weight will be considered having + * the minimum size of the largest child. If false, all children are + * measured normally. + * + * @return True to measure children with a weight using the minimum + * size of the largest child, false otherwise. + */ + public boolean isMeasureWithLargestChildEnabled() { + return mUseLargestChild; + } + + /** + * When set to true, all children with a weight will be considered having + * the minimum size of the largest child. If false, all children are + * measured normally. + * + * Disabled by default. + * + * @param enabled True to measure children with a weight using the + * minimum size of the largest child, false otherwise. + */ + @android.view.RemotableViewMethod + public void setMeasureWithLargestChildEnabled(boolean enabled) { + mUseLargestChild = enabled; + } + @Override public int getBaseline() { if (mBaselineAlignedChildIndex < 0) { diff --git a/core/res/res/layout/alert_dialog.xml b/core/res/res/layout/alert_dialog.xml index 7ae68f900b451..b746d289bb307 100644 --- a/core/res/res/layout/alert_dialog.xml +++ b/core/res/res/layout/alert_dialog.xml @@ -112,7 +112,7 @@ android:paddingTop="4dip" android:paddingLeft="2dip" android:paddingRight="2dip" - android:useLargestChild="true"> + android:measureWithLargestChild="true"> - + - + @@ -1260,7 +1260,7 @@ @@ -1283,6 +1283,7 @@ +