diff --git a/markwon-ext-tables/src/main/java/io/noties/markwon/ext/tables/TablePlugin.java b/markwon-ext-tables/src/main/java/io/noties/markwon/ext/tables/TablePlugin.java index 0cbce8b8..93dccd83 100644 --- a/markwon-ext-tables/src/main/java/io/noties/markwon/ext/tables/TablePlugin.java +++ b/markwon-ext-tables/src/main/java/io/noties/markwon/ext/tables/TablePlugin.java @@ -125,10 +125,6 @@ public class TablePlugin extends AbstractMarkwonPlugin { visitor.visitChildren(tableBlock); -// if (visitor.hasNext(tableBlock)) { -// visitor.ensureNewLine(); -// visitor.forceNewLine(); -// } visitor.blockEnd(tableBlock); } }) diff --git a/markwon-ext-tables/src/main/java/io/noties/markwon/ext/tables/TableRowSpan.java b/markwon-ext-tables/src/main/java/io/noties/markwon/ext/tables/TableRowSpan.java index 6cbdcae4..a90818fb 100644 --- a/markwon-ext-tables/src/main/java/io/noties/markwon/ext/tables/TableRowSpan.java +++ b/markwon-ext-tables/src/main/java/io/noties/markwon/ext/tables/TableRowSpan.java @@ -143,7 +143,13 @@ public class TableRowSpan extends ReplacementSpan { if (recreateLayouts(canvas.getWidth())) { width = canvas.getWidth(); - textPaint.set(paint); + // @since $nap; it's important to cast to TextPaint in order to display links, etc + if (paint instanceof TextPaint) { + // there must be a reason why this method receives Paint instead of TextPaint... + textPaint.set((TextPaint) paint); + } else { + textPaint.set(paint); + } makeNewLayouts(); } diff --git a/sample/src/main/AndroidManifest.xml b/sample/src/main/AndroidManifest.xml index f85d8750..04e2bc6d 100644 --- a/sample/src/main/AndroidManifest.xml +++ b/sample/src/main/AndroidManifest.xml @@ -38,6 +38,7 @@ + diff --git a/sample/src/main/java/io/noties/markwon/sample/MainActivity.java b/sample/src/main/java/io/noties/markwon/sample/MainActivity.java index 2ac55d99..0f1d903e 100644 --- a/sample/src/main/java/io/noties/markwon/sample/MainActivity.java +++ b/sample/src/main/java/io/noties/markwon/sample/MainActivity.java @@ -32,6 +32,7 @@ import io.noties.markwon.sample.notification.NotificationActivity; import io.noties.markwon.sample.precomputed.PrecomputedActivity; import io.noties.markwon.sample.recycler.RecyclerActivity; import io.noties.markwon.sample.simpleext.SimpleExtActivity; +import io.noties.markwon.sample.table.TableActivity; import io.noties.markwon.sample.tasklist.TaskListActivity; public class MainActivity extends Activity { @@ -147,6 +148,10 @@ public class MainActivity extends Activity { activity = NotificationActivity.class; break; + case TABLE: + activity = TableActivity.class; + break; + default: throw new IllegalStateException("No Activity is associated with sample-item: " + item); } diff --git a/sample/src/main/java/io/noties/markwon/sample/Sample.java b/sample/src/main/java/io/noties/markwon/sample/Sample.java index f18ed25b..e8c2c73d 100644 --- a/sample/src/main/java/io/noties/markwon/sample/Sample.java +++ b/sample/src/main/java/io/noties/markwon/sample/Sample.java @@ -33,7 +33,9 @@ public enum Sample { IMAGES(R.string.sample_images), - REMOTE_VIEWS(R.string.sample_remote_views); + REMOTE_VIEWS(R.string.sample_remote_views), + + TABLE(R.string.sample_table); private final int textResId; diff --git a/sample/src/main/java/io/noties/markwon/sample/table/TableActivity.java b/sample/src/main/java/io/noties/markwon/sample/table/TableActivity.java new file mode 100644 index 00000000..a47a13e2 --- /dev/null +++ b/sample/src/main/java/io/noties/markwon/sample/table/TableActivity.java @@ -0,0 +1,57 @@ +package io.noties.markwon.sample.table; + +import android.os.Bundle; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + +import io.noties.markwon.Markwon; +import io.noties.markwon.ext.tables.TablePlugin; +import io.noties.markwon.linkify.LinkifyPlugin; +import io.noties.markwon.sample.ActivityWithMenuOptions; +import io.noties.markwon.sample.MenuOptions; +import io.noties.markwon.sample.R; + +public class TableActivity extends ActivityWithMenuOptions { + + @NonNull + @Override + public MenuOptions menuOptions() { + return MenuOptions.create() + .add("tableAndLinkify", this::tableAndLinkify); + } + + private TextView textView; + + @Override + protected void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_text_view); + textView = findViewById(R.id.text_view); + + tableAndLinkify(); + } + + private void tableAndLinkify() { + final String md = "" + + "| HEADER | HEADER | HEADER |\n" + + "|:----:|:----:|:----:|\n" + + "| 测试 | 测试 | 测试 |\n" + + "| 测试 | 测试 | 测测测12345试测试测试 |\n" + + "| 测试 | 测试 | 123445 |\n" + + "| 测试 | 测试 | (650) 555-1212 |\n" + + "| 测试 | 测试 | [link](#) |\n" + + "\n" + + "测试\n" + + "\n" + + "[https://www.baidu.com](https://www.baidu.com)"; + + final Markwon markwon = Markwon.builder(this) + .usePlugin(LinkifyPlugin.create()) + .usePlugin(TablePlugin.create(this)) + .build(); + + markwon.setMarkdown(textView, md); + } +} diff --git a/sample/src/main/res/values/strings-samples.xml b/sample/src/main/res/values/strings-samples.xml index 0305b471..9da9300a 100644 --- a/sample/src/main/res/values/strings-samples.xml +++ b/sample/src/main/res/values/strings-samples.xml @@ -37,4 +37,5 @@ # \# Notification\n\nExample usage in notifications and other remote views + # \# Table\n\nUsage of tables in a `TextView` \ No newline at end of file