Android 中的领先保证金是多少?

What is Leading Margin in Android?

中的前导边距是什么意思

LeadingMarginSpansays

的文档

A paragraph style affecting the leading margin. There can be multiple leading margin spans on a single paragraph; they will be rendered in order, each adding its margin to the ones before it. The leading margin is on the right for lines in a right-to-left paragraph.

但它并没有真正说明什么是前导边距。

是不是段落首行的制表符缩进?或者是整个段落缩进的地方?我假设它是 /lidɪŋ/ 而不是 /lɛdɪŋ/ as in the space between lines.

我想知道的原因是我正在尝试使用 StaticLayout 制作我自己的 TextView。我指的是 Layout 和 StaticLayout source code 的想法。我想剪掉所有不必要的部分,但我不知道这是什么。

这里有一些 SO 问题也询问了前导边距,但提问者似乎知道这是什么意思。

一张图片会很有帮助,但不是绝对必要的。

leading margin指的是段落缩进多少,包括第一行和后续行。

下面的例子应该可以说明一切。下面示例中的 TextView 包含两段文本(即,它们包含 \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);