diff options
author | Setup Wizard Team <android-setup-team-eng@google.com> | 2021-08-19 08:35:24 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2021-08-19 08:35:24 +0000 |
commit | 1f82a158a86f12fc8f207c867ef531baed05150f (patch) | |
tree | 59ab12e7b09934c2bb0d99caf6a7af81f830ca87 | |
parent | fc8baa39041083cb64a75802df7032e0e648a930 (diff) | |
parent | 898ed76ec2c0ec65f2116a6af33ff08c5df6e549 (diff) | |
download | setupdesign-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
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 <annotation> 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); |