为什么Xamarin等效的EditText.getText()返回一个字符串?

Jam*_* Ko 4 c# java android xamarin.android xamarin

我是一个新的Xamarin.Android开发人员.我最近在阅读一些使用EditText派生类中的方法的Java代码.派生类的一个方法看起来像这样:

private void checkMatchingBracket(int paramInt)
{
    getText().removeSpan(this.openBracketSpan);
    getText().removeSpan(this.closeBracketSpan);
    ...
}
Run Code Online (Sandbox Code Playgroud)

这严重地混淆了我,因为我觉得getText()返回的String,因为EditText.Text财产是string在这个类Xamarin对口.然而,这种情况并非如此; 它似乎getText()返回一个Editable,它看起来像一个可变的字符串类型,提供额外的功能,如将"跨度"附加到文本的某些区域(SpannableString?).我的猜测是stringXamarin的返回已经从文本中复制过来Editable,所以我无法真正修改原文Editable并使用它的API.

我对么?Editable因为我正在使用Xamarin,所以无法访问原文吗?

编辑:我要做的具体事情是文本中的颜色区域EditText.我找到了这个使用跨度来实现这个目标的答案:

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);
Run Code Online (Sandbox Code Playgroud)

但是,Xamarin的API EditText.Text.set只接受.NET string,它显然没有颜色或"跨度"的概念.

Sus*_*ver 5

您正在寻找EditableText物业:

var editable = aTextView.EditableText;
editable?.RemoveSpan(aSpanObject);
Run Code Online (Sandbox Code Playgroud)

回复:https://developer.xamarin.com/api/property/Android.Widget.TextView.EditableText/

返回TextView显示为可编辑对象的文本.如果文本不可编辑,则返回null.