Xamarin:确定GetSpans()中的元素是粗体还是斜体?(Xamarin: Determine if element in GetSpans() is bold or italic?)

编程入门 行业动态 更新时间:2024-10-26 08:32:50
Xamarin:确定GetSpans()中的元素是粗体还是斜体?(Xamarin: Determine if element in GetSpans() is bold or italic?)

原生Android Spanned.getSpans(......,SyleSpan.class)函数返回类型StyleSpan[]

Xamarin ISpanned.GetSpans(......)函数返回类型ISpanned.GetSpans(......) Java.lang.Object[]尽管它在本机android中返回<T> (在我的情况下为T = StyleSpan )。 因此,如果我使用本机SDK,Mono接口不会暴露它将会暴露的内容,因此会丢失信息。

由于propery Style (原生android中的getStyle() )仅在StyleSpan可用,因此无法读取通过GetSpans读取的给定StyleSpan是粗体还是斜体。

我是如何确定粗体斜体的

这是单声道界面的限制吗?

Native Android Spanned.getSpans(......,SyleSpan.class) function return type StyleSpan[]

Xamarin ISpanned.GetSpans(......) function returns type Java.lang.Object[] though it returns <T> (T=StyleSpan in my case) in native android. Therefore there is a loss of information since the Mono interface doesn't expose what it would have been exposed if I had used the native SDK.

Since propery Style (getStyle() in native android) is only available in StyleSpan there is no way to read that a given StyleSpan read through GetSpans is bold or italic.

Any ideas how I determine bold or italic?

Is this a limitation in the mono interface?

最满意答案

你可以做任何事情。 ;) 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);

You can do everything. ;) There is just no comfortable generic wrapper for the GetSpans method.

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 :)"); } }

if you want to access it generic:

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);

更多推荐

本文发布于:2023-08-07 19:49:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1465935.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:斜体   粗体   元素   GetSpans   Xamarin

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!