summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSetup Wizard Team <android-setup-team-eng@google.com>2021-08-19 08:35:24 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2021-08-19 08:35:24 +0000
commit1f82a158a86f12fc8f207c867ef531baed05150f (patch)
tree59ab12e7b09934c2bb0d99caf6a7af81f830ca87
parentfc8baa39041083cb64a75802df7032e0e648a930 (diff)
parent898ed76ec2c0ec65f2116a6af33ff08c5df6e549 (diff)
downloadsetupdesign-1f82a158a86f12fc8f207c867ef531baed05150f.tar.gz
Import updated Android Setupdesign Library 390949856 am: 898ed76ec2
Original change: https://googleplex-android-review.googlesource.com/c/platform/external/setupdesign/+/15604007 Change-Id: Ib84f016477daeed2df6e0a2497a2929a4e0ef7ef
-rw-r--r--main/src/com/google/android/setupdesign/util/ContentStyler.java7
-rw-r--r--main/src/com/google/android/setupdesign/util/DescriptionStyler.java2
-rw-r--r--main/src/com/google/android/setupdesign/util/HeaderAreaStyler.java4
-rw-r--r--main/src/com/google/android/setupdesign/util/ItemStyler.java2
-rw-r--r--main/src/com/google/android/setupdesign/util/TextViewPartnerStyler.java20
-rw-r--r--main/src/com/google/android/setupdesign/view/RichTextView.java24
6 files changed, 58 insertions, 1 deletions
diff --git a/main/src/com/google/android/setupdesign/util/ContentStyler.java b/main/src/com/google/android/setupdesign/util/ContentStyler.java
index d390780..f44ddc6 100644
--- a/main/src/com/google/android/setupdesign/util/ContentStyler.java
+++ b/main/src/com/google/android/setupdesign/util/ContentStyler.java
@@ -52,6 +52,7 @@ public final class ContentStyler {
PartnerConfig.CONFIG_CONTENT_LINK_TEXT_COLOR,
PartnerConfig.CONFIG_CONTENT_TEXT_SIZE,
PartnerConfig.CONFIG_CONTENT_FONT_FAMILY,
+ PartnerConfig.CONFIG_DESCRIPTION_LINK_FONT_FAMILY,
null,
null,
ContentStyler.getPartnerContentTextGravity(contentText.getContext())));
@@ -80,6 +81,9 @@ public final class ContentStyler {
boolean fontFamilyConfigAvailable =
PartnerConfigHelper.get(context)
.isPartnerConfigAvailable(PartnerConfig.CONFIG_CONTENT_INFO_FONT_FAMILY);
+ boolean linkFontFamilyConfigAvailable =
+ PartnerConfigHelper.get(context)
+ .isPartnerConfigAvailable(PartnerConfig.CONFIG_DESCRIPTION_LINK_FONT_FAMILY);
TextViewPartnerStyler.applyPartnerCustomizationStyle(
infoText,
@@ -88,6 +92,9 @@ public final class ContentStyler {
null,
textSizeConfigAvailable ? PartnerConfig.CONFIG_CONTENT_INFO_TEXT_SIZE : null,
fontFamilyConfigAvailable ? PartnerConfig.CONFIG_CONTENT_INFO_FONT_FAMILY : null,
+ linkFontFamilyConfigAvailable
+ ? PartnerConfig.CONFIG_DESCRIPTION_LINK_FONT_FAMILY
+ : null,
null,
null,
0));
diff --git a/main/src/com/google/android/setupdesign/util/DescriptionStyler.java b/main/src/com/google/android/setupdesign/util/DescriptionStyler.java
index 0a786c6..b779bc6 100644
--- a/main/src/com/google/android/setupdesign/util/DescriptionStyler.java
+++ b/main/src/com/google/android/setupdesign/util/DescriptionStyler.java
@@ -41,6 +41,7 @@ public final class DescriptionStyler {
PartnerConfig.CONFIG_DESCRIPTION_LINK_TEXT_COLOR,
PartnerConfig.CONFIG_DESCRIPTION_TEXT_SIZE,
PartnerConfig.CONFIG_DESCRIPTION_FONT_FAMILY,
+ PartnerConfig.CONFIG_DESCRIPTION_LINK_FONT_FAMILY,
null,
null,
PartnerStyleHelper.getLayoutGravity(description.getContext())));
@@ -62,6 +63,7 @@ public final class DescriptionStyler {
null,
null,
null,
+ null,
PartnerStyleHelper.getLayoutGravity(description.getContext())));
}
diff --git a/main/src/com/google/android/setupdesign/util/HeaderAreaStyler.java b/main/src/com/google/android/setupdesign/util/HeaderAreaStyler.java
index 15ae075..4a0c9c4 100644
--- a/main/src/com/google/android/setupdesign/util/HeaderAreaStyler.java
+++ b/main/src/com/google/android/setupdesign/util/HeaderAreaStyler.java
@@ -69,6 +69,7 @@ public final class HeaderAreaStyler {
null,
PartnerConfig.CONFIG_HEADER_TEXT_SIZE,
PartnerConfig.CONFIG_HEADER_FONT_FAMILY,
+ null,
PartnerConfig.CONFIG_HEADER_TEXT_MARGIN_TOP,
PartnerConfig.CONFIG_HEADER_TEXT_MARGIN_BOTTOM,
PartnerStyleHelper.getLayoutGravity(header.getContext())));
@@ -92,6 +93,7 @@ public final class HeaderAreaStyler {
PartnerConfig.CONFIG_DESCRIPTION_LINK_TEXT_COLOR,
PartnerConfig.CONFIG_DESCRIPTION_TEXT_SIZE,
PartnerConfig.CONFIG_DESCRIPTION_FONT_FAMILY,
+ PartnerConfig.CONFIG_DESCRIPTION_LINK_FONT_FAMILY,
PartnerConfig.CONFIG_DESCRIPTION_TEXT_MARGIN_TOP,
PartnerConfig.CONFIG_DESCRIPTION_TEXT_MARGIN_BOTTOM,
PartnerStyleHelper.getLayoutGravity(description.getContext())));
@@ -117,6 +119,7 @@ public final class HeaderAreaStyler {
null,
null,
null,
+ null,
PartnerStyleHelper.getLayoutGravity(header.getContext())));
}
@@ -141,6 +144,7 @@ public final class HeaderAreaStyler {
null,
null,
null,
+ null,
PartnerStyleHelper.getLayoutGravity(description.getContext())));
}
diff --git a/main/src/com/google/android/setupdesign/util/ItemStyler.java b/main/src/com/google/android/setupdesign/util/ItemStyler.java
index ecddfd4..5dbf0a4 100644
--- a/main/src/com/google/android/setupdesign/util/ItemStyler.java
+++ b/main/src/com/google/android/setupdesign/util/ItemStyler.java
@@ -95,6 +95,7 @@ public final class ItemStyler {
PartnerConfig.CONFIG_ITEMS_TITLE_FONT_FAMILY,
null,
null,
+ null,
PartnerStyleHelper.getLayoutGravity(titleTextView.getContext())));
}
@@ -116,6 +117,7 @@ public final class ItemStyler {
null,
PartnerConfig.CONFIG_ITEMS_SUMMARY_TEXT_SIZE,
PartnerConfig.CONFIG_ITEMS_SUMMARY_FONT_FAMILY,
+ null,
PartnerConfig.CONFIG_ITEMS_SUMMARY_MARGIN_TOP,
null,
PartnerStyleHelper.getLayoutGravity(summaryTextView.getContext())));
diff --git a/main/src/com/google/android/setupdesign/util/TextViewPartnerStyler.java b/main/src/com/google/android/setupdesign/util/TextViewPartnerStyler.java
index 7b4acea..85b775e 100644
--- a/main/src/com/google/android/setupdesign/util/TextViewPartnerStyler.java
+++ b/main/src/com/google/android/setupdesign/util/TextViewPartnerStyler.java
@@ -26,6 +26,7 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.google.android.setupcompat.partnerconfig.PartnerConfig;
import com.google.android.setupcompat.partnerconfig.PartnerConfigHelper;
+import com.google.android.setupdesign.view.RichTextView;
/** Helper class to apply partner configurations to a textView. */
final class TextViewPartnerStyler {
@@ -85,6 +86,18 @@ final class TextViewPartnerStyler {
}
}
+ if (textView instanceof RichTextView && textPartnerConfigs.getLinkTextFontFamilyConfig() != null
+ && PartnerConfigHelper.get(context)
+ .isPartnerConfigAvailable(textPartnerConfigs.getLinkTextFontFamilyConfig())) {
+ String linkFontFamilyName =
+ PartnerConfigHelper.get(context)
+ .getString(context, textPartnerConfigs.getLinkTextFontFamilyConfig());
+ Typeface linkFont = Typeface.create(linkFontFamilyName, Typeface.NORMAL);
+ if (linkFont != null) {
+ ((RichTextView) textView).setSpanTypeface(linkFont);
+ }
+ }
+
if (textPartnerConfigs.getTextMarginTop() != null
|| textPartnerConfigs.getTextMarginBottom() != null) {
int topMargin;
@@ -142,6 +155,7 @@ final class TextViewPartnerStyler {
private final PartnerConfig textLinkedColorConfig;
private final PartnerConfig textSizeConfig;
private final PartnerConfig textFontFamilyConfig;
+ private final PartnerConfig textLinkFontFamilyConfig;
private final PartnerConfig textMarginTopConfig;
private final PartnerConfig textMarginBottomConfig;
private final int textGravity;
@@ -151,6 +165,7 @@ final class TextViewPartnerStyler {
@Nullable PartnerConfig textLinkedColorConfig,
@Nullable PartnerConfig textSizeConfig,
@Nullable PartnerConfig textFontFamilyConfig,
+ @Nullable PartnerConfig textLinkFontFamilyConfig,
@Nullable PartnerConfig textMarginTopConfig,
@Nullable PartnerConfig textMarginBottomConfig,
int textGravity) {
@@ -158,6 +173,7 @@ final class TextViewPartnerStyler {
this.textLinkedColorConfig = textLinkedColorConfig;
this.textSizeConfig = textSizeConfig;
this.textFontFamilyConfig = textFontFamilyConfig;
+ this.textLinkFontFamilyConfig = textLinkFontFamilyConfig;
this.textMarginTopConfig = textMarginTopConfig;
this.textMarginBottomConfig = textMarginBottomConfig;
this.textGravity = textGravity;
@@ -179,6 +195,10 @@ final class TextViewPartnerStyler {
return textFontFamilyConfig;
}
+ public PartnerConfig getLinkTextFontFamilyConfig() {
+ return textLinkFontFamilyConfig;
+ }
+
public PartnerConfig getTextMarginTop() {
return textMarginTopConfig;
}
diff --git a/main/src/com/google/android/setupdesign/view/RichTextView.java b/main/src/com/google/android/setupdesign/view/RichTextView.java
index f3348b4..b86082e 100644
--- a/main/src/com/google/android/setupdesign/view/RichTextView.java
+++ b/main/src/com/google/android/setupdesign/view/RichTextView.java
@@ -16,7 +16,10 @@
package com.google.android.setupdesign.view;
+import android.annotation.SuppressLint;
+import android.annotation.TargetApi;
import android.content.Context;
+import android.graphics.Typeface;
import android.graphics.drawable.Drawable;
import android.os.Build.VERSION;
import android.os.Build.VERSION_CODES;
@@ -32,6 +35,7 @@ import android.text.style.TypefaceSpan;
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;
+import androidx.annotation.VisibleForTesting;
import com.google.android.setupdesign.accessibility.LinkAccessibilityHelper;
import com.google.android.setupdesign.span.LinkSpan;
import com.google.android.setupdesign.span.LinkSpan.OnLinkClickListener;
@@ -51,6 +55,8 @@ public class RichTextView extends AppCompatTextView implements OnLinkClickListen
private static final String ANNOTATION_LINK = "link";
private static final String ANNOTATION_TEXT_APPEARANCE = "textAppearance";
+ @VisibleForTesting static Typeface spanTypeface;
+
/**
* Replace &lt;annotation&gt; tags in strings to become their respective types. Currently 2 types
* are supported:
@@ -62,6 +68,8 @@ public class RichTextView extends AppCompatTextView implements OnLinkClickListen
* android.text.style.TextAppearanceSpan} with @style/TextAppearance.FooBar
* </ol>
*/
+ @TargetApi(28)
+ @SuppressLint("NewApi")
public static CharSequence getRichText(Context context, CharSequence text) {
if (text instanceof Spanned) {
final SpannableString spannable = new SpannableString(text);
@@ -81,7 +89,10 @@ public class RichTextView extends AppCompatTextView implements OnLinkClickListen
SpanHelper.replaceSpan(spannable, span, textAppearanceSpan);
} else if (ANNOTATION_LINK.equals(key)) {
LinkSpan link = new LinkSpan(span.getValue());
- TypefaceSpan typefaceSpan = new TypefaceSpan("sans-serif-medium");
+ TypefaceSpan typefaceSpan =
+ (spanTypeface != null)
+ ? new TypefaceSpan(spanTypeface)
+ : new TypefaceSpan("sans-serif-medium");
SpanHelper.replaceSpan(spannable, span, link, typefaceSpan);
}
}
@@ -114,6 +125,17 @@ public class RichTextView extends AppCompatTextView implements OnLinkClickListen
ViewCompat.setAccessibilityDelegate(this, accessibilityHelper);
}
+ /**
+ * Sets the typeface in which the text should be displayed. The default typeface is {@code
+ * "sans-serif-medium"}
+ *
+ * @throws java.lang.NoSuchMethodError if sdk lower than {@code VERSION_CODES.P}
+ */
+ @TargetApi(VERSION_CODES.P)
+ public void setSpanTypeface(Typeface typeface) {
+ spanTypeface = typeface;
+ }
+
@Override
public void setText(CharSequence text, BufferType type) {
text = getRichText(getContext(), text);