Что такое маржа в Android?
Что означает ведущая маржа, как в
LeadingMarginSpan
LeadingMarginSpan.Standard
LeadingMarginSpan.LeadingMarginSpan2
Документация для LeadingMarginSpan
говорит
Стиль абзаца, влияющий на ведущее поле. В одном абзаце может быть несколько интервалов переднего поля; они будут отображаться по порядку, каждый из которых будет добавлять свои поля к предыдущим. Ведущее поле справа для строк в абзаце справа налево.
Но в действительности это не говорит о том, что является ведущей маржей.
Это как отступ в первой строке абзаца? Или это где весь абзац с отступом? Я предполагаю, что это /lidɪŋ/, а не /lɛdɪŋ/ как в промежутке между строками.
Мне интересно, что я пытаюсь создать свой собственный TextView с StaticLayout. Я имею в виду исходный код Layout и StaticLayout для идей. Я пытаюсь вырезать все ненужные части, но я не знал, что это было.
Вот несколько SO вопросов, которые также задают о маржинальной прибыли, но, похоже, спрашивающие знают, что это значит.
- поле установлено в первой строке textView
- LeadingMarginSpan2 - как ограничить количество абзацев с полем
Изображение будет действительно полезным, но не обязательно.
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);