10

のテキスト行ごとに個別の行間隔を定義することは可能TextViewですか?

例:

TextView tv = new TextView(context);
tv.setText("line1\nline2\nline3");

このメソッドsetLineSpacing(float add, float mult)は、 のすべてのテキスト行の行間隔を定義しますTextView。line1 と line2 の間に別の行間隔を定義し、line2 と line3 の間に別の行間隔を定義したいと思います。

これを行う方法はありますか?

スパナブルは解決策を提供しますか?

4

6 に答える 6

19

はい、LineHeightSpanインターフェースを利用して行うことができます。これを行う方法についての簡単で汚いサンプル コードを次に示します。

public class MyActivity extends Activity {

    private static class MySpan implements LineHeightSpan {
        private final int height;

        MySpan(int height) {
            this.height = height;
        }

        @Override
        public void chooseHeight(CharSequence text, int start, int end, int spanstartv, int v,
                FontMetricsInt fm) {
            fm.bottom += height;
            fm.descent += height;
        }
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        final TextView tv = new TextView(this);
        setContentView(tv);

        tv.setText("Lines:\n", BufferType.EDITABLE);
        appendLine(tv.getEditableText(), "Line 1 = 40\n", 40);
        appendLine(tv.getEditableText(), "Line 2 = 30\n", 30);
        appendLine(tv.getEditableText(), "Line 3 = 20\n", 20);
        appendLine(tv.getEditableText(), "Line 4 = 10\n", 10);
    }

    private void appendLine(Editable text, String string, int height) {
        final int start = text.length();
        text.append(string);
        final int end = text.length();
        text.setSpan(new MySpan(height), start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    }

}
于 2012-06-20T13:03:26.653 に答える
1

Htmlを使用して、テキストビューに対してこれらの種類の特定のスタイルを実行できます。この例を試してください、

tv.setText(Html.fromHtml("<h2>Text1</h2><br><p>Text2</p>"));

ここで許可されているさまざまな種類のタグは、

<a href="...">
<b>
<big>
<blockquote>
<br>
<cite>
<dfn>
<div align="...">
<em>
<font size="..." color="..." face="...">
<h1>
<h2>
<h3>
<h4>
<h5>
<h6>
<i>
<img src="...">
<p>
<small>
<strike>
<strong>
<sub>
<sup>
<tt>
<u>
于 2012-06-20T02:59:34.287 に答える
-3

この手法はc、c ++で使用されます。setText()内で使用するものは、記述したテキスト全体を表示します。

于 2012-06-20T03:03:11.800 に答える