diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml deleted file mode 100644 index 30aa626..0000000 --- a/.idea/codeStyles/Project.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - \ No newline at end of file diff --git a/HtmlSpanner/build.gradle b/HtmlSpanner/build.gradle index 8f2ad5a..c0b6b0c 100644 --- a/HtmlSpanner/build.gradle +++ b/HtmlSpanner/build.gradle @@ -38,7 +38,7 @@ dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'net.sourceforge.htmlcleaner:htmlcleaner:2.16' implementation 'com.osbcp.cssparser:cssparser:1.5' - implementation 'io.reactivex:rxjava:1.2.10' + implementation 'io.reactivex:rxjava:1.3.8' implementation 'io.reactivex:rxandroid:1.2.1' } diff --git a/HtmlSpanner/src/main/java/com/sysdata/htmlspanner/handlers/TableHandler.java b/HtmlSpanner/src/main/java/com/sysdata/htmlspanner/handlers/TableHandler.java index 755dbf5..b712c53 100644 --- a/HtmlSpanner/src/main/java/com/sysdata/htmlspanner/handlers/TableHandler.java +++ b/HtmlSpanner/src/main/java/com/sysdata/htmlspanner/handlers/TableHandler.java @@ -53,6 +53,7 @@ public class TableHandler extends TagNodeHandler { private int textColor = Color.BLACK; private static final int PADDING = 5; + private boolean hasHeader; /** * Sets how wide the table should be. @@ -116,6 +117,7 @@ private void readNode(Object node, Table table) { } if (tagNode.getName().equals("th")) { + hasHeader = true; Spanned result = this.getSpanner().fromTagNode(tagNode, null); table.addCell(result); return; @@ -192,11 +194,12 @@ public void handleTagNode(TagNode node, SpannableStringBuilder builder, List row = table.getRows().get(i); builder.append("\uFFFC"); - TableRowDrawable drawable = new TableRowDrawable(row, table.isDrawBorder()); + TableRowDrawable drawable = new TableRowDrawable(row, table.isDrawBorder(), i == 0 && hasHeader ? Alignment.ALIGN_CENTER : Alignment.ALIGN_NORMAL); drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight()); - builder.setSpan(new ImageSpan(drawable), start + i, builder.length(),Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); + int index = i == 0 ? start : builder.length() - 1; + builder.setSpan(new ImageSpan(drawable), index, builder.length(),Spannable.SPAN_EXCLUSIVE_INCLUSIVE); builder.append("\n"); } @@ -205,7 +208,7 @@ public void handleTagNode(TagNode node, SpannableStringBuilder builder, the last row would appear detached. */ builder.append("\uFFFC"); - Drawable drawable = new TableRowDrawable(new ArrayList(), table.isDrawBorder()); + Drawable drawable = new TableRowDrawable(new ArrayList(), table.isDrawBorder(), Alignment.ALIGN_NORMAL); drawable.setBounds(0, 0, tableWidth, 1); builder.setSpan(new ImageSpan(drawable), builder.length() -1, builder.length(), @@ -231,15 +234,17 @@ public Alignment getAlignment() { */ private class TableRowDrawable extends Drawable { + private final Alignment alignment; private List tableRow; private int rowHeight; private boolean paintBorder; - public TableRowDrawable(List tableRow, boolean paintBorder) { + public TableRowDrawable(List tableRow, boolean paintBorder, Alignment alignment) { this.tableRow = tableRow; this.rowHeight = calculateRowHeight(tableRow); this.paintBorder = paintBorder; + this.alignment = alignment; } @Override @@ -271,7 +276,7 @@ public void draw(Canvas canvas) { StaticLayout layout = new StaticLayout(tableRow.get(i), getTextPaint(), (columnWidth - 2 * PADDING), - Alignment.ALIGN_NORMAL, 1f, 0f, true); + alignment, 1f, 0f, true); canvas.translate(offset + PADDING, 0); layout.draw(canvas); diff --git a/HtmlSpanner/src/main/java/com/sysdata/htmlspanner/spans/BorderSpan.java b/HtmlSpanner/src/main/java/com/sysdata/htmlspanner/spans/BorderSpan.java index e9b1528..f546a76 100644 --- a/HtmlSpanner/src/main/java/com/sysdata/htmlspanner/spans/BorderSpan.java +++ b/HtmlSpanner/src/main/java/com/sysdata/htmlspanner/spans/BorderSpan.java @@ -86,8 +86,6 @@ public void drawBackground(Canvas c, Paint p, p.setStrokeWidth( strokeWidth ); right -= strokeWidth; - p.setStyle(Paint.Style.STROKE); - if ( start <= this.start ) { Log.d("BorderSpan", "Drawing first line"); c.drawLine(left, top, right, top, p); diff --git a/build.gradle b/build.gradle index 8836f3b..a9381ed 100644 --- a/build.gradle +++ b/build.gradle @@ -1,7 +1,7 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { - ext.kotlin_version = '1.2.51' + ext.kotlin_version = '1.3.31' repositories { google() jcenter()