原生 Android Spanned.getSpans(......,SyleSpan.class)
函数返回类型 StyleSpan[]
Xamarin ISpanned.GetSpans(......)
函数返回类型 Java.lang.Object[]
虽然它返回 <T>
(在 native android 中为 T
= StyleSpan
)。因此会丢失信息,因为如果我使用 native SDK,Mono 接口(interface)不会公开它会公开的内容。
自属性Style
(getStyle()
在 native android 中)仅在 StyleSpan
中可用无法读取通过 GetSpans 读取的给定 StyleSpan 是粗体还是斜体。
关于如何确定粗体或斜体有什么想法吗?
这是单声道界面的限制吗?
最佳答案
你无所不能。 ;) GetSpans
方法没有合适的通用包装器。
ISpanned ss = ...;
var spans = ss.GetSpans(0, 20, Class.FromType(typeof(SyleSpan)));
foreach (SyleSpan span in spans)
{
// do what you want
if(span.Style == TypefaceStyle.Bold)
{
Debug.WriteLine("Xamarin can find bold spans, too :)");
}
}
如果你想访问它:
public static class ISpannedExtension
{
public static TSpan[] GetSpans<TSpan>(this ISpanned ss, int startIndex, int length)
{
return ss.GetSpans(startIndex, length, Class.FromType(typeof(TSpan)))
.Cast<TSpan>()
.ToArray();
}
}
// usage
ISpanned ss = ...;
var spans = ss.GetSpans<SyleSpan>(0, 20);
关于android - Xamarin:确定 GetSpans() 中的元素是粗体还是斜体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38079662/