diff --git a/src/api-impl/android/content/res/AssetManager.java b/src/api-impl/android/content/res/AssetManager.java index b05b34d2..3195a1c9 100644 --- a/src/api-impl/android/content/res/AssetManager.java +++ b/src/api-impl/android/content/res/AssetManager.java @@ -923,6 +923,8 @@ public final class AssetManager { int[] inAttrs, int[] outValues, int[] outIndices) { if (defStyleRes == 0 && theme.containsKey(defStyleAttr)) defStyleRes = theme.get(defStyleAttr).getData(); + if (defStyleRes == 0 && set != null) + defStyleRes = set.getAttributeResourceValue(null, "style", 0); Map defStyle = loadStyle(defStyleRes); ResXmlPullParser parser = (ResXmlPullParser)set; diff --git a/src/api-impl/android/content/res/Resources.java b/src/api-impl/android/content/res/Resources.java index de36ec37..3ee322db 100644 --- a/src/api-impl/android/content/res/Resources.java +++ b/src/api-impl/android/content/res/Resources.java @@ -2050,8 +2050,9 @@ public class Resources { if (dr == null) { if (value.string == null) { - throw new NotFoundException( + Log.w(TAG, "Resource is not a Drawable (color or path): " + value); + return null; } String file = value.string.toString(); diff --git a/src/api-impl/android/graphics/drawable/ColorDrawable.java b/src/api-impl/android/graphics/drawable/ColorDrawable.java index b4b54add..c804e166 100644 --- a/src/api-impl/android/graphics/drawable/ColorDrawable.java +++ b/src/api-impl/android/graphics/drawable/ColorDrawable.java @@ -1,16 +1,15 @@ package android.graphics.drawable; -import android.graphics.Canvas; - public class ColorDrawable extends Drawable { + private int color; + public ColorDrawable(int color) { + this.color = color; } - @Override - public void draw(Canvas canvas) { - // TODO Auto-generated method stub - throw new UnsupportedOperationException("Unimplemented method 'draw'"); + public int getColor() { + return color; } } diff --git a/src/api-impl/android/graphics/drawable/Drawable.java b/src/api-impl/android/graphics/drawable/Drawable.java index ef1dbf11..97fe4f9a 100644 --- a/src/api-impl/android/graphics/drawable/Drawable.java +++ b/src/api-impl/android/graphics/drawable/Drawable.java @@ -121,6 +121,8 @@ public class Drawable { StateListDrawable drawable = new StateListDrawable(); drawable.inflate(resources, parser, parser, null); return drawable; + } else if ("shape".equals(parser.getName())) { + return new GradientDrawable(); } return null; } @@ -146,5 +148,11 @@ public class Drawable { return false; } + public void setAlpha(int alpha) {} + + public boolean getPadding(Rect padding) { + return false; + } + protected static native long native_paintable_from_path(String path); } diff --git a/src/api-impl/android/view/View.java b/src/api-impl/android/view/View.java index 661fc701..9319c18e 100644 --- a/src/api-impl/android/view/View.java +++ b/src/api-impl/android/view/View.java @@ -844,12 +844,14 @@ public class View extends Object { int background = a.getResourceId(com.android.internal.R.styleable.View_background, 0); if(background != 0) { - if(context.getResources().getResourceTypeName(background).equals("color")) {// drawables not currently supported + if(context.getResources().getResourceTypeName(background).equals("color")) { System.out.printf("__background__: >%x<\n", context.getResources().getColor(background)); final android.util.TypedValue typedValue = new android.util.TypedValue(); setBackgroundColor(context.getResources().getColor(background)); + } else { + setBackgroundResource(background); } } } @@ -1014,7 +1016,7 @@ public class View extends Object { this.visibility = visibility; } public void setPadding(int left, int top, int right, int bottom) {} - public void setBackgroundResource(int resid) throws Exception { + public void setBackgroundResource(int resid) { setBackgroundDrawable(getResources().getDrawable(resid)); }