From 65968c4a1fbdb16ff88f7ac0b2dfb8558ac7316c Mon Sep 17 00:00:00 2001 From: Cyrus Bakhtiari-Haftlang Date: Mon, 13 Aug 2018 15:20:24 +0200 Subject: [PATCH] Paragraph text can now explicitly be spanned Background: Consumers of the library may for instance want line spacing for the paragraph text but TextView's `lineSpacingMultiplier` and/or `lineSpacingExtra` apply line spacing to all lines. With this change, paragraphs may explicitly be spanned with a paragraph affecting span such as `LineHeightSpan` while the other tags (e.g. headings) will be unaffected. --- .../src/main/java/ru/noties/markwon/SpannableFactory.java | 3 +++ .../main/java/ru/noties/markwon/SpannableFactoryDef.java | 6 ++++++ .../noties/markwon/renderer/SpannableMarkdownVisitor.java | 3 ++- 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/library/src/main/java/ru/noties/markwon/SpannableFactory.java b/library/src/main/java/ru/noties/markwon/SpannableFactory.java index 4cd6b947..fb678e0d 100644 --- a/library/src/main/java/ru/noties/markwon/SpannableFactory.java +++ b/library/src/main/java/ru/noties/markwon/SpannableFactory.java @@ -56,6 +56,9 @@ public interface SpannableFactory { boolean isHeader, boolean isOdd); + @Nullable + Object paragraph(boolean inTightList); + @Nullable Object image( @NonNull SpannableTheme theme, diff --git a/library/src/main/java/ru/noties/markwon/SpannableFactoryDef.java b/library/src/main/java/ru/noties/markwon/SpannableFactoryDef.java index f7672ac7..3da4b7b4 100644 --- a/library/src/main/java/ru/noties/markwon/SpannableFactoryDef.java +++ b/library/src/main/java/ru/noties/markwon/SpannableFactoryDef.java @@ -103,6 +103,12 @@ public class SpannableFactoryDef implements SpannableFactory { return new TableRowSpan(theme, cells, isHeader, isOdd); } + @Nullable + @Override + public Object paragraph(boolean inTightList) { + return null; + } + @Nullable @Override public Object image(@NonNull SpannableTheme theme, @NonNull String destination, @NonNull AsyncDrawable.Loader loader, @NonNull ImageSizeResolver imageSizeResolver, @Nullable ImageSize imageSize, boolean replacementTextIsLink) { diff --git a/library/src/main/java/ru/noties/markwon/renderer/SpannableMarkdownVisitor.java b/library/src/main/java/ru/noties/markwon/renderer/SpannableMarkdownVisitor.java index b984ab71..8291e71d 100644 --- a/library/src/main/java/ru/noties/markwon/renderer/SpannableMarkdownVisitor.java +++ b/library/src/main/java/ru/noties/markwon/renderer/SpannableMarkdownVisitor.java @@ -380,14 +380,15 @@ public class SpannableMarkdownVisitor extends AbstractVisitor { @Override public void visit(Paragraph paragraph) { - final boolean inTightList = isInTightList(paragraph); if (!inTightList) { newLine(); } + final int length = builder.length(); visitChildren(paragraph); + setSpan(length, factory.paragraph(inTightList)); if (!inTightList) { newLine();