Skip to content

Commit 51e5aa7

Browse files
author
Salvatore Ranieri
committed
updated list item span with variable width of numbers and bullets
1 parent 743d805 commit 51e5aa7

3 files changed

Lines changed: 18 additions & 6 deletions

File tree

HtmlSpanner/src/main/java/com/sysdata/htmlspanner/HtmlSpanner.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
package com.sysdata.htmlspanner;
1818

19+
import android.graphics.Paint;
1920
import android.text.Spannable;
2021
import android.text.SpannableStringBuilder;
2122
import android.text.TextUtils;
@@ -72,6 +73,9 @@ public class HtmlSpanner {
7273
* Used for calculating margins.
7374
*/
7475
public static final int HORIZONTAL_EM_WIDTH = 10;
76+
public static int NUMBER_WIDTH = 5;
77+
public static int BULLET_WIDTH = 3;
78+
public static int BLANK_WIDTH = 10;
7579

7680

7781
private Map<String, TagNodeHandler> handlers;
@@ -163,6 +167,11 @@ public class HtmlSpanner {
163167
*/
164168
public HtmlSpanner(int textColor,float textSize) {
165169
this(createHtmlCleaner(), new SystemFontResolver(),textColor,textSize);
170+
Paint paint = new Paint();
171+
paint.setTextSize(textSize);
172+
NUMBER_WIDTH = Math.round(paint.measureText("4."));
173+
BULLET_WIDTH = Math.round(paint.measureText("\u2022"));
174+
BLANK_WIDTH = Math.round(paint.measureText(" "));
166175
}
167176

168177
/**

HtmlSpanner/src/main/java/com/sysdata/htmlspanner/spans/ListItemSpan.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,12 @@
1616

1717
package com.sysdata.htmlspanner.spans;
1818

19+
import android.app.Notification;
1920
import android.graphics.Canvas;
2021
import android.graphics.Paint;
2122
import android.text.Layout;
2223
import android.text.Spanned;
24+
import android.text.style.BulletSpan;
2325
import android.text.style.LeadingMarginSpan;
2426
import com.sysdata.htmlspanner.HtmlSpanner;
2527

@@ -36,11 +38,11 @@
3638
public class ListItemSpan implements LeadingMarginSpan {
3739
private final int mNumber;
3840

39-
private static final int BULLET_RADIUS = 3;
40-
private static final int NUMBER_RADIUS = 5;
41+
private static final int BULLET_RADIUS = HtmlSpanner.BULLET_WIDTH;
42+
private static final int NUMBER_RADIUS = HtmlSpanner.NUMBER_WIDTH;
4143

4244
//Gap should be about 1em
43-
public static final int STANDARD_GAP_WIDTH = HtmlSpanner.HORIZONTAL_EM_WIDTH;
45+
public static final int STANDARD_GAP_WIDTH = HtmlSpanner.BLANK_WIDTH;
4446

4547
public ListItemSpan() {
4648
mNumber = -1;
@@ -52,9 +54,9 @@ public ListItemSpan(int number) {
5254

5355
public int getLeadingMargin(boolean first) {
5456
if (mNumber != -1) {
55-
return 2 * (NUMBER_RADIUS + STANDARD_GAP_WIDTH);
57+
return (NUMBER_RADIUS + STANDARD_GAP_WIDTH);
5658
} else {
57-
return 2 * (BULLET_RADIUS + STANDARD_GAP_WIDTH);
59+
return (BULLET_RADIUS + STANDARD_GAP_WIDTH);
5860
}
5961
}
6062

app/src/main/res/layout/activity_main.xml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
app:layout_constraintBottom_toBottomOf="parent"
1414
app:layout_constraintLeft_toLeftOf="parent"
1515
app:layout_constraintRight_toRightOf="parent"
16-
app:layout_constraintTop_toTopOf="parent" />
16+
app:layout_constraintTop_toTopOf="parent"
17+
android:padding="25dp"/>
1718

1819
</android.support.constraint.ConstraintLayout>

0 commit comments

Comments
 (0)