Что такое маржа в Android?

Что означает ведущая маржа, как в

  • LeadingMarginSpan
  • LeadingMarginSpan.Standard
  • LeadingMarginSpan.LeadingMarginSpan2

Документация для LeadingMarginSpan говорит

Стиль абзаца, влияющий на ведущее поле. В одном абзаце может быть несколько интервалов переднего поля; они будут отображаться по порядку, каждый из которых будет добавлять свои поля к предыдущим. Ведущее поле справа для строк в абзаце справа налево.

Но в действительности это не говорит о том, что является ведущей маржей.

Это как отступ в первой строке абзаца? Или это где весь абзац с отступом? Я предполагаю, что это /lidɪŋ/, а не /lɛdɪŋ/ как в промежутке между строками.

Мне интересно, что я пытаюсь создать свой собственный TextView с StaticLayout. Я имею в виду исходный код Layout и StaticLayout для идей. Я пытаюсь вырезать все ненужные части, но я не знал, что это было.

Вот несколько SO вопросов, которые также задают о маржинальной прибыли, но, похоже, спрашивающие знают, что это значит.

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

1 ответ

Решение

Под начальным полем понимается отступ абзаца как в первой, так и в последующих строках.

Следующие примеры должны прояснить все. TextViews в приведенных ниже примерах содержат два абзаца текста (т.е. они включают \n персонаж).

Вот стандартный код, который был использован:

LeadingMarginSpan span = ... // substitute this line with the examples below

TextView textView = (TextView) findViewById(R.id.textView) ;
SpannableString spannableString = new SpannableString("Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\nDuis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.");
spannableString.setSpan(span, 0, spannableString.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
textView.setText(spannableString);

LeadingMarginSpan.Standard

Есть два основных конструктора.

Первый конструктор:LeadingMarginSpan.Standard(int first, int rest)

  • first сообщает количество пикселей для отступа первой строки каждого абзаца.
  • rest сообщает, на сколько пикселей отступать остальные строки каждого абзаца.

В примере слева отступ первой строки на 20 пикселей, а остальных строк - на 100 пикселей. (Заполнение не было добавлено к TextView.)

LeadingMarginSpan span = new LeadingMarginSpan.Standard(20, 100); // left example

Пример справа показывает первую строку с отступом 100, а остальные строки вообще без отступа.

LeadingMarginSpan span = new LeadingMarginSpan.Standard(100, 0); // right exmaple

Второй конструктор:LeadingMarginSpan.Standard(int every)

  • every говорит, сколько пикселей для отступа каждой строки каждого абзаца.

Этот пример отступает каждую строку на 200 пикселей.

LeadingMarginSpan span = new LeadingMarginSpan.Standard(200);
Другие вопросы по тегам