diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/common/resources/platform/AttributeInfo.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/common/resources/platform/AttributeInfo.java
index be928b0..e246975 100755
--- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/common/resources/platform/AttributeInfo.java
+++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/common/resources/platform/AttributeInfo.java
@@ -20,6 +20,7 @@
 import static com.android.SdkConstants.ANDROID_THEME_PREFIX;
 import static com.android.SdkConstants.ID_PREFIX;
 import static com.android.SdkConstants.NEW_ID_PREFIX;
+import static com.android.SdkConstants.PREFIX_THEME_REF;
 import static com.android.SdkConstants.VALUE_FALSE;
 import static com.android.SdkConstants.VALUE_TRUE;
 import static com.android.ide.common.api.IAttributeInfo.Format.BOOLEAN;
@@ -211,6 +212,11 @@
 
         // All other formats require a nonempty string
         if (value.isEmpty()) {
+            // Except for flags
+            if (mFormats.contains(FLAG)) {
+                return true;
+            }
+
             return false;
         }
         char first = value.charAt(0);
@@ -262,6 +268,14 @@
                     //String name = url.substring(nameBegin);
                     return true;
                 }
+            } else if (value.startsWith(PREFIX_THEME_REF)) {
+                if (projectResources != null) {
+                    return projectResources.hasResourceItem(ResourceType.ATTR,
+                            value.substring(PREFIX_THEME_REF.length()));
+                } else {
+                    // Until proven otherwise
+                    return true;
+                }
             }
         }
 
@@ -290,7 +304,7 @@
         }
 
         if (mFormats.contains(BOOLEAN)) {
-            if (value.equals(VALUE_TRUE) || value.equals(VALUE_FALSE)) {
+            if (value.equalsIgnoreCase(VALUE_TRUE) || value.equalsIgnoreCase(VALUE_FALSE)) {
                 return true;
             }
         }
diff --git a/eclipse/plugins/com.android.ide.eclipse.tests/unittests/com/android/ide/common/resources/platform/AttributeInfoTest.java b/eclipse/plugins/com.android.ide.eclipse.tests/unittests/com/android/ide/common/resources/platform/AttributeInfoTest.java
index cde12e5..b562922 100644
--- a/eclipse/plugins/com.android.ide.eclipse.tests/unittests/com/android/ide/common/resources/platform/AttributeInfoTest.java
+++ b/eclipse/plugins/com.android.ide.eclipse.tests/unittests/com/android/ide/common/resources/platform/AttributeInfoTest.java
@@ -35,6 +35,8 @@
 import com.google.common.collect.Sets;
 import com.google.common.io.Files;
 
+import junit.framework.TestCase;
+
 import org.w3c.dom.Attr;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
@@ -47,8 +49,6 @@
 import java.util.Map;
 import java.util.Set;
 
-import junit.framework.TestCase;
-
 @SuppressWarnings("javadoc")
 public class AttributeInfoTest extends TestCase {
     public void testSimple() throws Exception {
@@ -70,7 +70,10 @@
         assertTrue(info.isValid("true", null, null));
         assertTrue(info.isValid("false", null, null));
         assertFalse(info.isValid("", null, null));
-        assertFalse(info.isValid("TRUE", null, null));
+        assertTrue(info.isValid("TRUE", null, null));
+        assertTrue(info.isValid("True", null, null));
+        assertTrue(info.isValid("FALSE", null, null));
+        assertTrue(info.isValid("False", null, null));
     }
 
     public void testIsValidInteger() throws Exception {
@@ -160,6 +163,7 @@
         assertTrue(info.isValid("@animator/foo", null, null));
         assertTrue(info.isValid("@anim/foo", null, null));
         assertTrue(info.isValid("?android:attr/textAppearanceMedium", null, null));
+        assertTrue(info.isValid("?textAppearanceMedium", null, null));
 
         assertFalse(info.isValid("", null, null));
         assertFalse(info.isValid("foo", null, null));
@@ -182,8 +186,8 @@
         assertTrue(info.isValid("left", null, null));
         assertTrue(info.isValid("top", null, null));
         assertTrue(info.isValid("left|top", null, null));
+        assertTrue(info.isValid("", null, null));
 
-        assertFalse(info.isValid("", null, null));
         assertFalse(info.isValid("other", null, null));
         assertFalse(info.isValid("50", null, null));
     }
