Xamarin:确定 GetSpans() 中的元素是粗体还是斜体?
Xamarin: Determine if element in GetSpans() is bold or italic?
原生 Android Spanned.getSpans(......,SyleSpan.class)
函数 return 类型 StyleSpan[]
Xamarin ISpanned.GetSpans(......)
函数 returns 类型 Java.lang.Object[]
虽然它 returns <T>
(T
=StyleSpan
在我的例子中)在本地 android。因此会丢失信息,因为如果我使用本机 SDK,Mono 接口不会公开它会公开的内容。
由于 属性 Style
(getStyle()
在原生 android 中)仅在 StyleSpan
中可用,因此无法读取给定的 StyleSpan 读取通过 GetSpans 为粗体或斜体。
关于我如何确定 粗体 或 斜体 的任何想法?
这是单声道界面的限制吗?
你无所不能。 ;) 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 Spanned.getSpans(......,SyleSpan.class)
函数 return 类型 StyleSpan[]
Xamarin ISpanned.GetSpans(......)
函数 returns 类型 Java.lang.Object[]
虽然它 returns <T>
(T
=StyleSpan
在我的例子中)在本地 android。因此会丢失信息,因为如果我使用本机 SDK,Mono 接口不会公开它会公开的内容。
由于 属性 Style
(getStyle()
在原生 android 中)仅在 StyleSpan
中可用,因此无法读取给定的 StyleSpan 读取通过 GetSpans 为粗体或斜体。
关于我如何确定 粗体 或 斜体 的任何想法?
这是单声道界面的限制吗?
你无所不能。 ;) 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);