Я пытаюсь использовать два RelativeSizeSpan рядом друг с другом, но между ними возникает большой промежуток. Посмотрите, чего я хочу достичь и что я получаю.Несколько RelativeSizeSpan на той же линии
Это, как я строить экземпляр составного
String formattedValue = "25%";
SpannableStringBuilder ssb = new SpannableStringBuilder(formattedValue);
ssb.append("\n");
ssb.append(otherValue);
int firstSpanEnd = formattedValue.length();
ssb.setSpan(new RelativeSizeSpan(1.5f), 0, firstSpanEnd-1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
ssb.setSpan(new RelativeSizeSpan(0.3f), firstSpanEnd, firstSpanEnd+1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
И это, как я рисую его
float maxTextWidth = getPaintCenterText().measureText(mText, 0, mText.length());
TextPaint textPaint = new TextPaint(getPaintCenterText());
mCenterTextLayout = new StaticLayout(mText, textPaint, (int) maxTextWidth, Layout.Alignment.ALIGN_NORMAL, 0.85f, 0, false);
c.save();
float centerY = center.y - totalheight;
c.translate(center.x, centerY);
mCenterTextLayout.draw(c);
c.restore();
Если удалить второй RelativeSizeSpan в разрыв меньше, но он все еще там.
Кроме того, я пробовал несколько Spanned flags, но ни один из них не имеет никакого эффекта.
Edit: MText поле моего SpannableStringBuilder
[0] = '2' 48
[1] = '5' 46
[2] = '%' 48
[3] = '\n' 10
[4] = 'E' 69
[5] = 'x' 120
[6] = 'e' 101
[7] = 'r' 114
[8] = 'c' 99
[9] = 'i' 105
[10] = 's' 115
[11] = 'e' 101
[12] = ' ' 32
[13] = 'd' 100
[14] = 'a' 97
[15] = 'y' 121
[16] = 's' 115
[17] = '\u0000' 0
[18] = '\u0000' 0
[19] = '\u0000' 0
[20] = '\u0000' 0
[21] = '\u0000' 0
[22] = '\u0000' 0
Получаю это, используя ваш код: [Ссылка] (http://postimg.org/image/5yvfj4etp/). Единственное изменение, которое я сделал, это 'ssb.setSpan (новый RelativeSizeSpan (0.3f), firstSpanEnd-1, firstSpanEnd, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE), который, вероятно, был опечаткой. Использование шрифта по умолчанию с размером текста 30 с. – Vikram
спасибо @ Викраму, я посмотрю, как только смогу, что будет в понедельник – Maragues
Это не сработало. Как только я добавлю RelativeSizeSpan или AbsoluteSizeSpan, появится большой пробел (эмулятор Nexus 4 и One Plus One, как в 4.4). Спасибо за попытку. – Maragues