diff --git a/core/java/android/view/LayoutInflater.java b/core/java/android/view/LayoutInflater.java index f86d88e7eacf2..1546877aee77d 100644 --- a/core/java/android/view/LayoutInflater.java +++ b/core/java/android/view/LayoutInflater.java @@ -837,7 +837,7 @@ public abstract class LayoutInflater { throws XmlPullParserException, IOException { int type; - final TypedArray ta = view.getContext().obtainStyledAttributes( + final TypedArray ta = mContext.obtainStyledAttributes( attrs, com.android.internal.R.styleable.ViewTag); final int key = ta.getResourceId(com.android.internal.R.styleable.ViewTag_id, 0); final CharSequence value = ta.getText(com.android.internal.R.styleable.ViewTag_value); @@ -856,26 +856,7 @@ public abstract class LayoutInflater { int type; if (parent instanceof ViewGroup) { - Context context = inheritContext ? parent.getContext() : mContext; - - // Apply a theme wrapper, if requested. - final TypedArray ta = context.obtainStyledAttributes(attrs, ATTRS_THEME); - final int themeResId = ta.getResourceId(0, 0); - if (themeResId != 0) { - context = new ContextThemeWrapper(context, themeResId); - } - ta.recycle(); - - final TypedArray a = context.obtainStyledAttributes( - attrs, com.android.internal.R.styleable.Include); - final int layout = a.getResourceId( - com.android.internal.R.styleable.Include_layout, 0); - final int id = a.getResourceId( - com.android.internal.R.styleable.Include_id, View.NO_ID); - final int visibility = a.getInt( - com.android.internal.R.styleable.Include_visibility, -1); - a.recycle(); - + final int layout = attrs.getAttributeResourceValue(null, "layout", 0); if (layout == 0) { final String value = attrs.getAttributeValue(null, "layout"); if (value == null) { @@ -934,6 +915,15 @@ public abstract class LayoutInflater { // Inflate all children. rInflate(childParser, view, childAttrs, true, true); + // Attempt to override the included layout's android:id with the + // one set on the tag itself. + TypedArray a = mContext.obtainStyledAttributes(attrs, + com.android.internal.R.styleable.View, 0, 0); + int id = a.getResourceId(com.android.internal.R.styleable.View_id, View.NO_ID); + // While we're at it, let's try to override android:visibility. + int visibility = a.getInt(com.android.internal.R.styleable.View_visibility, -1); + a.recycle(); + if (id != View.NO_ID) { view.setId(id); } diff --git a/core/res/res/values/attrs.xml b/core/res/res/values/attrs.xml index 2fc44dfd32af1..0f59d8d10e229 100644 --- a/core/res/res/values/attrs.xml +++ b/core/res/res/values/attrs.xml @@ -2624,13 +2624,6 @@ - - - - - - -