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