Tables extension
This extension adds support for GFM tables.
final Markwon markwon = Markwon.builder(context)
// create default instance of TablePlugin
.usePlugin(TablePlugin.create(context))
.build();
final TableTheme tableTheme = TableTheme.builder()
.tableBorderColor(Color.RED)
.tableBorderWidth(0)
.tableCellPadding(0)
.tableHeaderRowBackgroundColor(Color.BLACK)
.tableEvenRowBackgroundColor(Color.GREEN)
.tableOddRowBackgroundColor(Color.YELLOW)
.build();
final Markwon markwon = Markwon.builder(context)
.usePlugin(TablePlugin.create(tableTheme))
.build();
final Markwon markwon = Markwon.builder(context)
.usePlugin(TablePlugin.create(builder ->
builder
.tableBorderColor(Color.RED)
.tableBorderWidth(0)
.tableCellPadding(0)
.tableHeaderRowBackgroundColor(Color.BLACK)
.tableEvenRowBackgroundColor(Color.GREEN)
.tableOddRowBackgroundColor(Color.YELLOW)
.build();
))
Please note, that by default tables have limitations. For example, table contents won't be copied to clipboard if a TextView has such functionality. Table will always take full width of a TextView in which it is displayed. All columns will always be of the same width. So, default implementation provides basic functionality which can answer some needs. These all come from the limited nature of the TextView to display such content.
WARNING
If table contains links a special MovementMethod
must be used on a TextView
widget - TableAwareMovementMethod
,
for example with MovementMethodPlugin
:
final Markwon markwon = Markwon.builder(context)
.usePlugin(LinkifyPlugin.create())
.usePlugin(TablePlugin.create(context))
// use TableAwareLinkMovementMethod to handle clicks inside tables,
// wraps LinkMovementMethod internally
.usePlugin(MovementMethodPlugin.create(TableAwareMovementMethod.create()))
.build();
In order to provide full-fledged experience, tables must be displayed in a special widget.
Since version 3.0.0
Markwon provides a special artifact markwon-recycler
that allows
to render markdown in a set of widgets in a RecyclerView. It also gives ability to change
display widget form TextView to any other.
final Table table = Table.parse(Markwon, TableBlock);
myTableWidget.setTable(table);
TIP
To take advantage of this functionality and render tables without limitations (including
horizontally scrollable layout when its contents exceed screen width), refer to recycler-table
module documentation that adds support for rendering TableBlock
markdown node inside Android-native TableLayout
widget.
Theme
Cell padding
Padding inside a table cell
name | tableCellPadding |
type | @Px int |
default | 0 |
Border color
The color of table borders
name | tableBorderColor |
type | @ColorInt int |
default | (text color) with 75 (0-255) alpha |
Border width
The width of table borders
name | tableBorderWidth |
type | @Px int |
default | Stroke with of context TextPaint |
Odd row background
Background of an odd table row
name | tableOddRowBackgroundColor |
type | @ColorInt int |
default | (text color) with 22 (0-255) alpha |
1.1.1
Even row backgroundBackground of an even table row
name | tableEventRowBackgroundColor |
type | @ColorInt int |
default | 0 |
1.1.1
Header row backgroundBackground of header table row
name | tableHeaderRowBackgroundColor |
type | @ColorInt int |
default | 0 |