summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--compiler/src/main/java/android/databinding/tool/expr/ResourceExpr.java4
-rw-r--r--databinding.properties2
-rw-r--r--integration-tests/TestApp/app/src/androidTestApi7/java/android/databinding/testapp/TextViewBindingAdapterTest.java7
-rw-r--r--integration-tests/TestApp/app/src/androidTestApi7/java/android/databinding/testapp/ViewBindingAdapterTest.java6
-rw-r--r--integration-tests/TestApp/app/src/main/res/color/text_colors.xml12
-rw-r--r--integration-tests/TestApp/app/src/main/res/drawable/circle.xml6
-rw-r--r--integration-tests/TestApp/app/src/main/res/layout/text_view_adapter_test.xml4
-rw-r--r--integration-tests/TestApp/app/src/main/res/layout/view_adapter_test.xml5
-rw-r--r--library/build.gradle2
-rw-r--r--library/src/main/java/android/databinding/ViewDataBinding.java20
10 files changed, 64 insertions, 4 deletions
diff --git a/compiler/src/main/java/android/databinding/tool/expr/ResourceExpr.java b/compiler/src/main/java/android/databinding/tool/expr/ResourceExpr.java
index b20075b4..514fbc79 100644
--- a/compiler/src/main/java/android/databinding/tool/expr/ResourceExpr.java
+++ b/compiler/src/main/java/android/databinding/tool/expr/ResourceExpr.java
@@ -146,11 +146,11 @@ public class ResourceExpr extends Expr {
if ("animator".equals(mResourceType)) return "android.animation.AnimatorInflater.loadAnimator(" + context + ", " + resourceName + ")";
if ("bool".equals(mResourceType)) return resources + ".getBoolean(" + resourceName + ")";
if ("color".equals(mResourceType)) return resources + ".getColor(" + resourceName + ")";
- if ("colorStateList".equals(mResourceType)) return resources + ".getColorStateList(" + resourceName + ")";
+ if ("colorStateList".equals(mResourceType)) return "getColorStateListFromResource(" + resourceName + ")";
if ("dimen".equals(mResourceType)) return resources + ".getDimension(" + resourceName + ")";
if ("dimenOffset".equals(mResourceType)) return resources + ".getDimensionPixelOffset(" + resourceName + ")";
if ("dimenSize".equals(mResourceType)) return resources + ".getDimensionPixelSize(" + resourceName + ")";
- if ("drawable".equals(mResourceType)) return resources + ".getDrawable(" + resourceName + ")";
+ if ("drawable".equals(mResourceType)) return "getDrawableFromResource(" + resourceName + ")";
if ("fraction".equals(mResourceType)) {
String base = getChildCode(0, "1");
String pbase = getChildCode(1, "1");
diff --git a/databinding.properties b/databinding.properties
index ff9ec0a4..25d36cf1 100644
--- a/databinding.properties
+++ b/databinding.properties
@@ -6,7 +6,7 @@ androidPluginVersion = 1.4.0-beta6
javaTargetCompatibility = 1.7
javaSourceCompatibility = 1.7
buildToolsVersion = 22.0.1
-compileSdkVersionStr = 22
+compileSdkVersionStr = 23
prebuildFolderName=prebuilds
group=com.android.databinding
testGroup=com.android.databinding.test
diff --git a/integration-tests/TestApp/app/src/androidTestApi7/java/android/databinding/testapp/TextViewBindingAdapterTest.java b/integration-tests/TestApp/app/src/androidTestApi7/java/android/databinding/testapp/TextViewBindingAdapterTest.java
index 98272dd6..13814ae2 100644
--- a/integration-tests/TestApp/app/src/androidTestApi7/java/android/databinding/testapp/TextViewBindingAdapterTest.java
+++ b/integration-tests/TestApp/app/src/androidTestApi7/java/android/databinding/testapp/TextViewBindingAdapterTest.java
@@ -22,6 +22,7 @@ import android.annotation.TargetApi;
import android.databinding.adapters.TextViewBindingAdapter;
import android.graphics.drawable.ColorDrawable;
import android.os.Build;
+import android.test.UiThreadTest;
import android.text.Editable;
import android.text.InputFilter;
import android.text.InputType;
@@ -301,4 +302,10 @@ public class TextViewBindingAdapterTest
assertTrue(TextViewBindingObject.KeyListener2.class.isInstance(textView.getKeyListener()));
}
+ @UiThreadTest
+ public void testTextWithTheme() throws Throwable {
+ TextView textView = mBinder.textWithTheme;
+ assertNotNull(textView.getTextColors());
+ }
+
}
diff --git a/integration-tests/TestApp/app/src/androidTestApi7/java/android/databinding/testapp/ViewBindingAdapterTest.java b/integration-tests/TestApp/app/src/androidTestApi7/java/android/databinding/testapp/ViewBindingAdapterTest.java
index 595fce41..3fe918a7 100644
--- a/integration-tests/TestApp/app/src/androidTestApi7/java/android/databinding/testapp/ViewBindingAdapterTest.java
+++ b/integration-tests/TestApp/app/src/androidTestApi7/java/android/databinding/testapp/ViewBindingAdapterTest.java
@@ -184,4 +184,10 @@ public class ViewBindingAdapterTest extends BindingAdapterTestBase<ViewAdapterTe
Drawable drawable = view.getBackground();
assertNotNull(drawable);
}
+
+ @UiThreadTest
+ public void testBackgroundDrawableWithTheme() throws Throwable {
+ View view = mBinder.backgroundWithTheme;
+ assertNotNull(view.getBackground());
+ }
}
diff --git a/integration-tests/TestApp/app/src/main/res/color/text_colors.xml b/integration-tests/TestApp/app/src/main/res/color/text_colors.xml
new file mode 100644
index 00000000..0043a023
--- /dev/null
+++ b/integration-tests/TestApp/app/src/main/res/color/text_colors.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+ <item
+ android:color="?android:selectedWeekBackgroundColor"
+ android:state_pressed="false"
+ android:state_focused="false"
+ android:state_selected="false"
+ android:state_checkable="false"
+ android:state_checked="false"
+ android:state_enabled="false"
+ android:state_window_focused="false"/>
+</selector> \ No newline at end of file
diff --git a/integration-tests/TestApp/app/src/main/res/drawable/circle.xml b/integration-tests/TestApp/app/src/main/res/drawable/circle.xml
new file mode 100644
index 00000000..e325ab31
--- /dev/null
+++ b/integration-tests/TestApp/app/src/main/res/drawable/circle.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+ android:shape="oval">
+ <solid
+ android:color="?android:selectedWeekBackgroundColor"/>
+</shape> \ No newline at end of file
diff --git a/integration-tests/TestApp/app/src/main/res/layout/text_view_adapter_test.xml b/integration-tests/TestApp/app/src/main/res/layout/text_view_adapter_test.xml
index a37031b3..1502e959 100644
--- a/integration-tests/TestApp/app/src/main/res/layout/text_view_adapter_test.xml
+++ b/integration-tests/TestApp/app/src/main/res/layout/text_view_adapter_test.xml
@@ -80,6 +80,10 @@
android:id="@+id/textInputMethod"
android:inputMethod="@{obj.inputMethod}"
/>
+ <TextView android:layout_width="match_parent" android:layout_height="match_parent"
+ android:id="@+id/textWithTheme"
+ android:textColor="@{@colorStateList/text_colors}"
+ />
</LinearLayout>
</layout> \ No newline at end of file
diff --git a/integration-tests/TestApp/app/src/main/res/layout/view_adapter_test.xml b/integration-tests/TestApp/app/src/main/res/layout/view_adapter_test.xml
index 42509c9c..ce3b8958 100644
--- a/integration-tests/TestApp/app/src/main/res/layout/view_adapter_test.xml
+++ b/integration-tests/TestApp/app/src/main/res/layout/view_adapter_test.xml
@@ -116,5 +116,10 @@
android:layout_width="10dp"
android:layout_height="10dp"
android:background="@{@drawable/ic_launcher}"/>
+ <View
+ android:id="@+id/backgroundWithTheme"
+ android:layout_width="10dp"
+ android:layout_height="10dp"
+ android:background="@{@drawable/circle}"/>
</LinearLayout>
</layout> \ No newline at end of file
diff --git a/library/build.gradle b/library/build.gradle
index fa8a1e42..43d214f0 100644
--- a/library/build.gradle
+++ b/library/build.gradle
@@ -32,7 +32,7 @@ android {
defaultConfig {
minSdkVersion 7
- targetSdkVersion 21
+ targetSdkVersion 23
versionCode 1
versionName "1.0"
}
diff --git a/library/src/main/java/android/databinding/ViewDataBinding.java b/library/src/main/java/android/databinding/ViewDataBinding.java
index 1d087629..2dacd1e9 100644
--- a/library/src/main/java/android/databinding/ViewDataBinding.java
+++ b/library/src/main/java/android/databinding/ViewDataBinding.java
@@ -19,7 +19,9 @@ package android.databinding;
import com.android.databinding.library.R;
import android.annotation.TargetApi;
+import android.content.res.ColorStateList;
import android.databinding.CallbackRegistry.NotifierCallback;
+import android.graphics.drawable.Drawable;
import android.os.Build.VERSION;
import android.os.Build.VERSION_CODES;
import android.os.Handler;
@@ -563,6 +565,24 @@ public abstract class ViewDataBinding {
}
/** @hide */
+ protected ColorStateList getColorStateListFromResource(int resourceId) {
+ if (VERSION.SDK_INT >= VERSION_CODES.M) {
+ return getRoot().getContext().getColorStateList(resourceId);
+ } else {
+ return getRoot().getResources().getColorStateList(resourceId);
+ }
+ }
+
+ /** @hide */
+ protected Drawable getDrawableFromResource(int resourceId) {
+ if (VERSION.SDK_INT >= VERSION_CODES.LOLLIPOP) {
+ return getRoot().getContext().getDrawable(resourceId);
+ } else {
+ return getRoot().getResources().getDrawable(resourceId);
+ }
+ }
+
+ /** @hide */
protected static <T> T getFromArray(T[] arr, int index) {
if (index < 0 || index >= arr.length) {
return null;