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,它显然没有颜色或"跨度"的概念.
您正在寻找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.