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

我是一个新的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 ,它看起来像一个可变的字符串类型,它提供了额外的function,例如将“spans”附加到某些文本区域( SpannableString ?)。 我的猜测是Xamarin返回的string已从此Editable的文本中复制过来,因此我无法真正修改原始的Editable并使用其API。

我对么? 因为我正在使用Xamarin,是否无法访问原始的Editable

编辑:我想要做的具体事情是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); 

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

您正在寻找EditableText属性:

 var editable = aTextView.EditableText; editable?.RemoveSpan(aSpanObject); 

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

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