BufferType.Normal和BufferType.Spannable对textView的效果

The effect of BufferType.Normal and BufferType.Spannable for textView

我有这个代码:

    TextView tv1 = FindViewById<TextView>(Resource.Id.textView1);
    tv1.Text = "Text";
    SpannableString wordtoSpan = new SpannableString(tv1.Text);
    wordtoSpan.SetSpan(new UnderlineSpan(), 0, tv1.Text.Length, 0);
    tv1.SetText(wordtoSpan, TextView.BufferType.Normal);

不管我用的是BufferType.Normal还是BufferType.Spannable,在文字下方画了一条线, 文本下方出现一行。那么BufferType.NormalBufferType.Spannable的作用是什么?

TextView.BufferType:

  • 正常:正常;
  • 可编辑:可以追加字符;
  • Spannable:在给定字符区域使用样式;

定义文本特征的文本缓冲区类型,例如静态、可设置样式或可编辑。它可以用于在运行时更改 TextView。

TextView.BufferType.Editable: 插入

      TextView tv2 = FindViewById<TextView>(Resource.Id.textView2);
        tv2.SetText("Hello", TextView.BufferType.Editable);
        var s = tv2.EditableText;
        s.Insert(1, " Hello");

输出:

TextView.BufferType.Spannable: 在单个Textview中设置不同的颜色

TextView tv3 = FindViewById<TextView>(Resource.Id.textView3);
        tv3.Text = "Hello World";
        SpannableString wordtoSpan3 = new SpannableString(tv3.Text);
        wordtoSpan3.SetSpan(new ForegroundColorSpan(Color.Red), 0, 5, 0);  // "Hello" is red
        wordtoSpan3.SetSpan(new ForegroundColorSpan(Color.Blue), 7, 11, 0); // "orld" is blue
        tv3.SetText(wordtoSpan3, TextView.BufferType.Spannable);

输出: