Fix for ordered list items to be greater than theme block margin (#22)

This commit is contained in:
Dimitry 2018-01-13 21:06:34 +03:00 committed by GitHub
parent afad16c202
commit d0537df14d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -11,6 +11,11 @@ public class OrderedListItemSpan implements LeadingMarginSpan {
private final SpannableTheme theme; private final SpannableTheme theme;
private final String number; private final String number;
// we will use this variable to check if our order number text exceeds block margin,
// so we will use it instead of block margin
// @since 1.0.3
private int margin;
public OrderedListItemSpan( public OrderedListItemSpan(
@NonNull SpannableTheme theme, @NonNull SpannableTheme theme,
@NonNull String number @NonNull String number
@ -21,7 +26,8 @@ public class OrderedListItemSpan implements LeadingMarginSpan {
@Override @Override
public int getLeadingMargin(boolean first) { public int getLeadingMargin(boolean first) {
return theme.getBlockMargin(); // @since 1.0.3
return margin > 0 ? margin : theme.getBlockMargin();
} }
@Override @Override
@ -35,9 +41,17 @@ public class OrderedListItemSpan implements LeadingMarginSpan {
theme.applyListItemStyle(p); theme.applyListItemStyle(p);
final int width = theme.getBlockMargin();
final int numberWidth = (int) (p.measureText(number) + .5F); final int numberWidth = (int) (p.measureText(number) + .5F);
// @since 1.0.3
int width = theme.getBlockMargin();
if (numberWidth > width) {
width = numberWidth;
margin = numberWidth;
} else {
margin = 0;
}
final int left; final int left;
if (dir > 0) { if (dir > 0) {
left = x + (width * dir) - numberWidth; left = x + (width * dir) - numberWidth;