Merge "Fix issue with project resources overriding framework resources." into gingerbread
This commit is contained in:
committed by
Android (Google) Code Review
commit
63e5d07ec9
@ -266,7 +266,7 @@ public final class BridgeContext extends Context {
|
||||
customStyle = parser.getAttributeValue(null /* namespace*/, "style");
|
||||
}
|
||||
if (customStyle != null) {
|
||||
IResourceValue item = findResValue(customStyle);
|
||||
IResourceValue item = findResValue(customStyle, false /*forceFrameworkOnly*/);
|
||||
|
||||
if (item instanceof IStyleResourceValue) {
|
||||
defStyleValues = (IStyleResourceValue)item;
|
||||
@ -283,7 +283,7 @@ public final class BridgeContext extends Context {
|
||||
|
||||
if (item != null) {
|
||||
// item is a reference to a style entry. Search for it.
|
||||
item = findResValue(item.getValue());
|
||||
item = findResValue(item.getValue(), false /*forceFrameworkOnly*/);
|
||||
|
||||
if (item instanceof IStyleResourceValue) {
|
||||
defStyleValues = (IStyleResourceValue)item;
|
||||
@ -413,7 +413,7 @@ public final class BridgeContext extends Context {
|
||||
}
|
||||
|
||||
// get the IResourceValue referenced by this value
|
||||
IResourceValue resValue = findResValue(value);
|
||||
IResourceValue resValue = findResValue(value, false /*forceFrameworkOnly*/);
|
||||
|
||||
// if resValue is null, but value is not null, this means it was not a reference.
|
||||
// we return the name/value wrapper in a IResourceValue
|
||||
@ -449,7 +449,7 @@ public final class BridgeContext extends Context {
|
||||
}
|
||||
|
||||
// else attempt to find another IResourceValue referenced by this one.
|
||||
IResourceValue resolvedValue = findResValue(value.getValue());
|
||||
IResourceValue resolvedValue = findResValue(value.getValue(), value.isFramework());
|
||||
|
||||
// if the value did not reference anything, then we simply return the input value
|
||||
if (resolvedValue == null) {
|
||||
@ -476,9 +476,11 @@ public final class BridgeContext extends Context {
|
||||
* only support the android namespace.
|
||||
*
|
||||
* @param reference the resource reference to search for.
|
||||
* @param forceFrameworkOnly if true all references are considered to be toward framework
|
||||
* resource even if the reference does not include the android: prefix.
|
||||
* @return a {@link IResourceValue} or <code>null</code>.
|
||||
*/
|
||||
IResourceValue findResValue(String reference) {
|
||||
IResourceValue findResValue(String reference, boolean forceFrameworkOnly) {
|
||||
if (reference == null) {
|
||||
return null;
|
||||
}
|
||||
@ -560,7 +562,8 @@ public final class BridgeContext extends Context {
|
||||
segments[1] = segments[1].substring(BridgeConstants.PREFIX_ANDROID.length());
|
||||
}
|
||||
|
||||
return findResValue(segments[0], segments[1], frameworkOnly);
|
||||
return findResValue(segments[0], segments[1],
|
||||
forceFrameworkOnly ? true :frameworkOnly);
|
||||
}
|
||||
|
||||
// Looks like the value didn't reference anything. Return null.
|
||||
|
@ -100,7 +100,8 @@ public class BridgeXmlPullAttributes extends XmlPullAttributes {
|
||||
|
||||
private int resolveResourceValue(String value, int defaultValue) {
|
||||
// now look for this particular value
|
||||
IResourceValue resource = mContext.resolveResValue(mContext.findResValue(value));
|
||||
IResourceValue resource = mContext.resolveResValue(
|
||||
mContext.findResValue(value, mPlatformFile));
|
||||
|
||||
if (resource != null) {
|
||||
Integer id = null;
|
||||
|
@ -148,8 +148,7 @@ public final class ResourceHelper {
|
||||
parser.setInput(new FileReader(f));
|
||||
|
||||
d = Drawable.createFromXml(context.getResources(),
|
||||
// FIXME: we need to know if this resource is platform or not
|
||||
new BridgeXmlBlockParser(parser, context, false));
|
||||
new BridgeXmlBlockParser(parser, context, isFramework));
|
||||
return d;
|
||||
} catch (XmlPullParserException e) {
|
||||
context.getLogger().error(e);
|
||||
|
Reference in New Issue
Block a user