DynamicLayout добавляет дополнительное пространство - PullRequest
1 голос
/ 21 апреля 2019

Я использую DynamicLayout для рендеринга SpannableString, но я не могу точно центрировать текст. Кажется, что при запуске есть какое-то смещение, от которого я не могу избавиться.

Вот моя реализация:

private Editable edit;
private DynamicLayout layout;

private void drawText(Canvas canvas) {
    if (layout != null) {
        edit.clear();
        edit.append(textValue);
        layout.draw(canvas);
        return;
    }

    edit = Editable.Factory.getInstance().newEditable(textValue);

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
        layout = DynamicLayout.Builder.obtain(edit , mTextPaint, (int) mCircleBounds.right)
                .setAlignment(Layout.Alignment.ALIGN_CENTER)
                .setLineSpacing(0, 0)
                .setIncludePad(false)
                .build();
    } else {
        layout = new DynamicLayout(edit,
                mTextPaint,
                canvas.getWidth(),
                Layout.Alignment.ALIGN_CENTER,
                0, 0,
                false);
    }

    layout.draw(canvas);
}

Любая помощь очень ценится!

...