0

我有这个代码:

    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.Normal和的作用是BufferType.Spannable什么?

4

1 回答 1

0

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);

输出:

在此处输入图像描述

于 2021-01-11T08:27:15.237 回答