21

前导边距是什么意思,如

文档LeadingMarginSpan

影响前导边距的段落样式。单个段落可以有多个前导边距跨度;它们将按顺序呈现,每个都将其边距添加到它之前的边距。对于从右到左的段落中的行,前导边距位于右侧。

但它并没有真正说明什么是领先优势。

它就像段落第一行的制表符缩进吗?还是整个段落缩进的地方?我认为它是 /lidɪŋ/ 而不是/lɛdɪŋ/ 就像在行之间的空间中一样

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

这里有一些 SO 问题也询问领先边距,但提问者似乎知道这意味着什么。

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

4

1 回答 1

30

前导边距是指段落缩进的程度,包括第一行和后续行。

下面的例子应该让一切都清楚。下面示例中的 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(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);
于 2017-02-06T00:39:21.027 回答