Merge "Make TextViewCompat#setTextAppearance work with fonts" into oc-support-26.0-dev
diff --git a/compat/java/android/support/v4/content/res/ResourcesCompat.java b/compat/java/android/support/v4/content/res/ResourcesCompat.java
index 134149d..9a4b258 100644
--- a/compat/java/android/support/v4/content/res/ResourcesCompat.java
+++ b/compat/java/android/support/v4/content/res/ResourcesCompat.java
@@ -27,6 +27,7 @@
import android.content.res.XmlResourceParser;
import android.graphics.Typeface;
import android.graphics.drawable.Drawable;
+import android.os.Build;
import android.support.annotation.ColorInt;
import android.support.annotation.ColorRes;
import android.support.annotation.DrawableRes;
@@ -36,7 +37,6 @@
import android.support.annotation.RestrictTo;
import android.support.v4.content.res.FontResourcesParserCompat.FamilyResourceEntry;
import android.support.v4.graphics.TypefaceCompat;
-import android.support.v4.os.BuildCompat;
import android.util.Log;
import android.util.TypedValue;
@@ -194,7 +194,7 @@
if (context.isRestricted()) {
return null;
}
- if (BuildCompat.isAtLeastO()) {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
// Use framework support.
return context.getResources().getFont(id);
}
diff --git a/v7/appcompat/src/android/support/v7/widget/AppCompatTextHelper.java b/v7/appcompat/src/android/support/v7/widget/AppCompatTextHelper.java
index afc951a..d8c4f16 100644
--- a/v7/appcompat/src/android/support/v7/widget/AppCompatTextHelper.java
+++ b/v7/appcompat/src/android/support/v7/widget/AppCompatTextHelper.java
@@ -238,7 +238,12 @@
mView.setTextColor(textColor);
}
}
+
+ updateTypefaceAndStyle(context, a);
a.recycle();
+ if (mFontTypeface != null) {
+ mView.setTypeface(mFontTypeface, mStyle);
+ }
}
void setAllCaps(boolean allCaps) {
diff --git a/v7/appcompat/tests/res/layout/appcompat_textview_activity.xml b/v7/appcompat/tests/res/layout/appcompat_textview_activity.xml
index 056f2dc..5ef371a 100644
--- a/v7/appcompat/tests/res/layout/appcompat_textview_activity.xml
+++ b/v7/appcompat/tests/res/layout/appcompat_textview_activity.xml
@@ -213,6 +213,12 @@
android:layout_height="wrap_content"
android:textStyle="italic" />
+ <android.support.v7.widget.AppCompatTextView
+ android:id="@+id/textview_simple"
+ android:text="@string/sample_text1"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content" />
+
</LinearLayout>
</ScrollView>
diff --git a/v7/appcompat/tests/res/values/styles.xml b/v7/appcompat/tests/res/values/styles.xml
index 05e2fa5..81f8493 100644
--- a/v7/appcompat/tests/res/values/styles.xml
+++ b/v7/appcompat/tests/res/values/styles.xml
@@ -65,4 +65,9 @@
<style name="TextView_TextStyleOverride">
<item name="android:textStyle">italic</item>
</style>
+
+ <style name="TextView_FontResourceWithStyle">
+ <item name="fontFamily">@font/samplexmlfont</item>
+ <item name="android:textStyle">italic</item>
+ </style>
</resources>
diff --git a/v7/appcompat/tests/src/android/support/v7/widget/AppCompatTextViewTest.java b/v7/appcompat/tests/src/android/support/v7/widget/AppCompatTextViewTest.java
index cddf5e5..d1b00ad 100644
--- a/v7/appcompat/tests/src/android/support/v7/widget/AppCompatTextViewTest.java
+++ b/v7/appcompat/tests/src/android/support/v7/widget/AppCompatTextViewTest.java
@@ -28,9 +28,11 @@
import android.graphics.Color;
import android.graphics.Typeface;
import android.os.Build;
+import android.support.test.annotation.UiThreadTest;
import android.support.test.filters.SmallTest;
import android.support.v4.content.ContextCompat;
import android.support.v4.content.res.ResourcesCompat;
+import android.support.v4.widget.TextViewCompat;
import android.support.v7.appcompat.test.R;
import android.widget.TextView;
@@ -232,4 +234,14 @@
assertEquals(Typeface.ITALIC, textView.getTypeface().getStyle());
}
+
+ @Test
+ @UiThreadTest
+ public void testFontResources_setTextAppearance() {
+ TextView textView = mContainer.findViewById(R.id.textview_simple);
+
+ TextViewCompat.setTextAppearance(textView, R.style.TextView_FontResourceWithStyle);
+
+ assertNotEquals(Typeface.DEFAULT, textView.getTypeface());
+ }
}