问题描述
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.normal
和BufferType.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),5,0); // "Hello" is red
wordtoSpan3.SetSpan(new ForegroundColorSpan(Color.Blue),7,11,0); // "orld" is blue
tv3.SetText(wordtoSpan3,TextView.BufferType.Spannable);
输出: