我是一名新的Xamarin.Android开发人员。我最近阅读了一些在派生类中使用EditText
方法的Java代码。其中一个派生类'方法看起来像这样:
private void checkMatchingBracket(int paramInt)
{
getText().removeSpan(this.openBracketSpan);
getText().removeSpan(this.closeBracketSpan);
...
}
这使我感到困惑,因为我认为getText()
返回了String
,因为EditText.Text
属性是此类“Xamarin”中的string
。然而,这种情况并非如此;似乎getText()
返回Editable
,它看起来像一个可变的字符串类型,它提供了额外的功能,例如将“跨度”附加到文本的某些区域(SpannableString
?)。我的猜测是string
Xamarin返回已从此Editable
的文本中复制过来,因此我无法真正修改原始Editable
并使用其API。
我说错了吗?是否无法访问原始Editable
,因为我正在使用Xamarin?
编辑:我要做的具体事情是EditText
中文字的颜色区域。我发现this answer使用跨度来实现这一目标:
TextView textView = (TextView)findViewById(R.id.mytextview01);
Spannable WordtoSpan = new SpannableString("partial colored text");
WordtoSpan.setSpan(new ForegroundColorSpan(Color.BLUE), 2, 4, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
textView.setText(WordtoSpan);
但是,Xamarin的API EditText.Text.set
只接受.NET string
,它显然没有颜色或“跨度”的概念。
答案 0 :(得分:5)
您正在寻找EditableText
属性:
var editable = aTextView.EditableText;
editable?.RemoveSpan(aSpanObject);
回复:https://developer.xamarin.com/api/property/Android.Widget.TextView.EditableText/
返回TextView显示为可编辑对象的文本。如果文本不可编辑,则返回null。