【发布时间】:2018-01-12 14:00:25
【问题描述】:
我正在尝试从 Xamarin 项目中的 textView 中删除链接下划线。 以下 sn-p 在 java 项目中运行良好:
textView.setText("You must agree to our terms and conditions");
Pattern pattern1 = Pattern.compile("terms and conditions");
Linkify.addLinks(textView, pattern1, "http://www.someLink.com", null, new Linkify.TransformFilter() {
@Override
public String transformUrl(Matcher match, String url) {
return "";
}
});
Spannable s = new SpannableString(textView.getText());
URLSpan[] spans = s.getSpans(0, s.length(), URLSpan.class);
for (URLSpan span: spans) {
int start = s.getSpanStart(span);
int end = s.getSpanEnd(span);
NoUnderline noUnderline = new NoUnderline();
s.setSpan(noUnderline, start, end, 0);
}
textView.setText(s);
现在,在 C# 中翻译完全相同的代码,我得出以下结论:
TextView.Text = "You must agree to our terms and conditions";
Java.Util.Regex.Pattern termsAndConditionsMatcher = Java.Util.Regex.Pattern.Compile("terms and conditions");
Linkify.AddLinks(TextView, termsAndConditionsMatcher, "https://www.someLink.com/", null, new EmptyLinkTransformer());
var spannable = new SpannableString(TextView.Text);
var spans = spannable.GetSpans(0, spannable.Length(), Java.Lang.Class.FromType(typeof(URLSpan)));
var urlSpans = new URLSpan[spans.Length];
for (var i = 0; i < urlSpans.Length; i++)
{
urlSpans[i] = spans[i] as URLSpan;
}
foreach (URLSpan span in urlSpans)
{
int start = spannable.GetSpanStart(span);
int end = spannable.GetSpanEnd(span);
var updated = new NoUnderlineSpan();
spannable.SetSpan(updated, start, end, 0);
}
TextView.TextFormatted = spannable;
问题是 spannable.GetSpans(0, spannable.Length(), Java.Lang.Class.FromType(typeof(URLSpan))) 返回 0 个元素,即使我看到了链接在 UI 上被着色和下划线。
【问题讨论】:
标签: c# android xamarin.android