Fix deep nested bullet lists for Nougat
This commit is contained in:
parent
c6349738ad
commit
66bfad16ca
@ -6,7 +6,7 @@ org.gradle.configureondemand=true
|
|||||||
android.enableBuildCache=true
|
android.enableBuildCache=true
|
||||||
android.buildCacheDir=build/pre-dex-cache
|
android.buildCacheDir=build/pre-dex-cache
|
||||||
|
|
||||||
VERSION_NAME=2.0.1
|
VERSION_NAME=2.0.2-SNAPSHOT
|
||||||
|
|
||||||
GROUP=ru.noties
|
GROUP=ru.noties
|
||||||
POM_DESCRIPTION=Markwon
|
POM_DESCRIPTION=Markwon
|
||||||
|
@ -58,14 +58,28 @@ public class BulletListItemSpan implements LeadingMarginSpan {
|
|||||||
|
|
||||||
final int marginLeft = (width - side) / 2;
|
final int marginLeft = (width - side) / 2;
|
||||||
|
|
||||||
|
// @since 2.0.2
|
||||||
|
// There is a bug in Android Nougat, when this span receives an `x` that
|
||||||
|
// doesn't correspond to what it should be (text is placed correctly though).
|
||||||
|
// Let's make this a general rule -> manually calculate difference between expected/actual
|
||||||
|
// and add this difference to resulting left/right values. If everything goes well
|
||||||
|
// we do not encounter a bug -> this `diff` value will be 0
|
||||||
|
final int diff;
|
||||||
|
if (dir < 0) {
|
||||||
|
// rtl
|
||||||
|
diff = x - (layout.getWidth() - (width * level));
|
||||||
|
} else {
|
||||||
|
diff = (width * level) - x;
|
||||||
|
}
|
||||||
|
|
||||||
// in order to support RTL
|
// in order to support RTL
|
||||||
final int l;
|
final int l;
|
||||||
final int r;
|
final int r;
|
||||||
{
|
{
|
||||||
final int left = x + (dir * marginLeft);
|
final int left = x + (dir * marginLeft);
|
||||||
final int right = left + (dir * side);
|
final int right = left + (dir * side);
|
||||||
l = Math.min(left, right);
|
l = Math.min(left, right) + (dir * diff);
|
||||||
r = Math.max(left, right);
|
r = Math.max(left, right) + (dir * diff);
|
||||||
}
|
}
|
||||||
|
|
||||||
final int t = baseline + (int) ((paint.descent() + paint.ascent()) / 2.F + .5F) - (side / 2);
|
final int t = baseline + (int) ((paint.descent() + paint.ascent()) / 2.F + .5F) - (side / 2);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user