【发布时间】:2020-12-19 13:01:37
【问题描述】:
我在 Xamarin.Forms 中创建了一个应用,然后创建了一个带有自定义渲染器的用于 android 的自定义标签。渲染器的工作是使标签文本可选择。它有效,标签文本现在是可选的。问题是,虽然它与常规标签完美配合,但当我尝试在包含希伯来语和英语(RTL 和 LTR)文本的标签中选择文本时,应用程序崩溃并出现此错误: Java.Lang.ArrayIndexOutOfBoundsException: 'length=35; index=35'(索引和长度因崩溃而异,但始终彼此相等)。
我在网上寻找解决方案但找不到...我还尝试了渲染器的其他实现,它们都有相同的错误。 (我认为这可能是 Android/Xamarin 的问题) 有人可以帮我吗?
渲染器代码:
class CustomLabelRenderer : LabelRenderer
{
public CustomLabelRenderer(Context context) : base(context) {}
protected override void OnElementChanged(ElementChangedEventArgs<Label> e)
{
base.OnElementChanged(e);
Control.SetTextIsSelectable(true);
}
}
(自定义标签(SELabel)没有代码,它只是继承自常规标签)
设备日志: Log.txt
【问题讨论】:
-
错误可能是某些语言使用超过一个字节来表示一个字符。很抱歉,我无法提供更多帮助。
标签: java c# android .net xamarin.forms