diff options
| author | Philip Milne <pmilne@google.com> | 2012-02-22 16:34:51 -0800 |
|---|---|---|
| committer | Philip Milne <pmilne@google.com> | 2012-02-22 18:32:39 -0800 |
| commit | c29f031598811486d83f418fd08fbfe1fc41788a (patch) | |
| tree | 6a98ca1627cb484e2496aac59c7c89419c8de4d7 /core/java/android/view/ViewGroup.java | |
| parent | 8ad41a3fdc140ef7dfc481d7db55fd73911f7b88 (diff) | |
Fix for bug 6050753.
The method:
TypedArray: getLayoutDimension(int, String)
throws an undocumented exception when either the width and/or height
attributes are undefined.
See the bug report above for reasons why this was deemed unhelpful both
in the tools area and to developers in general.
Fix by:
1. Documenting the conditions under which the method raises an exception.
2. Deprecating the method, advising callers to supply a default instead.
Additionally, redefine the:
ViewGroup: setBaseAttributes(TypedArray, int, int);
methods to provide the appropriate defaults in ViewGroup subclasses as
advised above.
For the platform layouts the default value is WRAP_CONTENT (and is
defined in the ViewGroup.LayoutParams class). The special cases
are accomodated in LayoutParams subclasses in the following cases:
Subclass width height
FrameLayout.LayoutParams: MATCH_PARENT, MATCH_PARENT
TableLayout.LayoutParams: MATCH_PARENT, WRAP_CONTENT
TableRow.LayoutParams: MATCH_PARENT, WRAP_CONTENT
Change-Id: I335a3bd8e2d7f7866692898ed73492635a5b61ea
Diffstat (limited to 'core/java/android/view/ViewGroup.java')
| -rw-r--r-- | core/java/android/view/ViewGroup.java | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/core/java/android/view/ViewGroup.java b/core/java/android/view/ViewGroup.java index c68d77d6d3ac..b97dca3c6bff 100644 --- a/core/java/android/view/ViewGroup.java +++ b/core/java/android/view/ViewGroup.java @@ -5089,15 +5089,19 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager } /** - * Extracts the layout parameters from the supplied attributes. + * Extracts the <code>width</code> and <code>height</code> layout parameters + * from the supplied TypedArray, <code>a</code>, and assigns them + * to the appropriate fields. If, <code>a</code>, does not contain an + * entry for either attribute, the value, {@link ViewGroup.LayoutParams#WRAP_CONTENT}, + * is used as a default. * * @param a the style attributes to extract the parameters from * @param widthAttr the identifier of the width attribute * @param heightAttr the identifier of the height attribute */ protected void setBaseAttributes(TypedArray a, int widthAttr, int heightAttr) { - width = a.getLayoutDimension(widthAttr, "layout_width"); - height = a.getLayoutDimension(heightAttr, "layout_height"); + width = a.getLayoutDimension(widthAttr, WRAP_CONTENT); + height = a.getLayoutDimension(heightAttr, WRAP_CONTENT); } /** |
