2017-02-04 153 views
8

什麼是領先的保證金的涵義與什麼是Android的領先優勢?

的文檔LeadingMarginSpansays

段落樣式affec領先的利潤率。在一個段落中可以有多個 前導裕量跨度​​;它們將以 的順序進行呈現,每個訂單都將其餘量添加到之前的數量。領先的 保證金位於右側至右側段落的右側。

但它並沒有真正說出什麼是領先保證金。

它像一個縮進在段落第一行的製表符?還是整個段落縮進的地方?我認爲這是/lidɪŋ/而不是/lɛdɪŋ/ as in the space between lines

我想知道的原因是我想用StaticLayout製作自己的TextView。我指的是佈局和StaticLayout source code的想法。我試圖剪掉所有不必要的部分,但我不知道這是什麼。

下面是幾個SO問題,也提出了有關領先保證金的問題,但求助者似乎知道這意味着什麼。

的圖像將是非常有益的,但不是絕對必要的。

回答

9

前導餘量指段落的縮進程度,第一行和後續行。

下面的例子應該清楚一切。以下示例中的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告訴有多少像素縮進每個段落的其餘行。

enter image description here

左側縮進該示例通過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告訴像素多少縮進每個段落的每一行。

enter image description here

此示例縮進每行200個像素。

LeadingMarginSpan span = new LeadingMarginSpan.Standard(200);