Android: есть ли способ применить диапазон правого поля в тексте редактирования? - PullRequest
4 голосов
/ 22 марта 2012

Я ищу что-то похожее на LeadingMarginSpan, но способный применять к тексту как левые, так и правые поля, а не только левое поле.

Я пытаюсь сделать следующее:есть возможность сделать некоторые абзацы более узкими, чем другие, в одном и том же тексте редактирования, поэтому он может выглядеть примерно так:

blah blah blah blah blah blah blah blah
blah blah blah blah blah blah blah blah
blah blah

     blah blah blah blah blah blah
     blah blah blah blah blah blah
     blah blah blah blah blah blah
     blah

blah blah blah blah blah blah blah blah
blah blah blah blah blah blah blah blah
blah blah blah blah blah

Насколько я знаю, нет предопределенных интервалов, которые делают это, и яне знаю, как создать новый диапазон с нуля, который мог бы это сделать.Любая помощь будет принята с благодарностью!

Ответы [ 3 ]

2 голосов
/ 22 марта 2012

Насколько я знаю, нет предопределенных диапазонов, которые делают это

AFAIK, вы правы.

, а я нетзнать, как создать новый диапазон с нуля, который мог бы это сделать.

Ну, поддержка LeadingMarginSpan встроена в Layout и StaticLayout, поэтому просто создайте TrailingMarginSpanбудет недостаточно.Вы должны будете создать свои собственные подклассы Layout и StaticLayout, переопределяя и клонируя их очень сложные draw() методы, и добавьте свои TrailingMarginSupport.

Короче, это будет болезненно.

Если вы делаете свою собственную прошивку, конечно, это становится намного проще ...: -)

0 голосов
/ 27 августа 2017

Вы не можете установить правильное заполнение / отступ с помощью span.Но вы можете обмануть с MetricAffectingSpan.Он имеет два метода: updateMeasureState (вызывается при измерении текста) и updateDrawState (вызывается при рисовании текста).

Итак, если вы увеличите textScaleX при измерении, android сделает более короткие линии.Если вы не увеличите textScaleX при рисовании, Android не будет масштабировать линии при рисовании.В результате вы получите более короткие строки.Это будет выглядеть как правый отступ.

Он не идеален: вы не можете установить правильный отступ в пикселях, но у вас будет некоторый отступ справа.

Вот 5% пример правильного заполнения.

public class RoughtRightPaddingSpan extends MetricAffectingSpan {

    @Override
    public void updateMeasureState(TextPaint p) {
        p.setTextScaleX(1.05f);
    }

    @Override
    public void updateDrawState(TextPaint tp) {
    }
}
0 голосов
/ 22 марта 2012

Я бы переключился на веб-просмотр вместо TextView

С веб-просмотром вы можете использовать html-тег, который предлагает гораздо больше вариантов форматирования

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...