BufferType.Normal 和 BufferType.Spannable 对 textView 的影响

问题描述

我有这个代码

    TextView tv1 = FindViewById<TextView>(Resource.Id.textView1);
    tv1.Text = "Text";
    SpannableString wordtoSpan = new SpannableString(tv1.Text);
    wordtoSpan.SetSpan(new Underlinespan(),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");

输出:

enter image description here

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),5,0);  // "Hello" is red
        wordtoSpan3.SetSpan(new ForegroundColorSpan(Color.Blue),7,11,0); // "orld" is blue
        tv3.SetText(wordtoSpan3,TextView.BufferType.Spannable);

输出:

enter image description here

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...