Xamarin.Android文本中间的超链接无法点击问题求助
问题:仅让文本中指定单词可点击跳转浏览器
目标
实现句子中间的某个单词作为超链接,点击后在浏览器中打开对应网站
问题现象
超链接显示正常,但点击无响应
已尝试方案
- 使用Intent实现点击功能,但会导致整段文本可点击
- 改用Html.FromHtml方法,代码如下:
string Content = "<span>Please navigate to <a href='https://www.website.com'>HERE</a> to register</span>"; lblTESTSystem.TextFormatted = Html.FromHtml(Content); //lblTESTSystem.SetText(Html.FromHtml(Content, FromHtmlOptions.ModeLegacy), TextView.BufferType.Spannable);
(上述代码效果如图:
)
最初使整段文本可点击的代码:
//lblTESTSystem.Click += (sender, eventArgs) => //{ // var uri = Android.Net.Uri.Parse("https://www.website.com"); // var intent = new Intent(Intent.ActionView, uri); // StartActivity(intent); //};
解决方法
在使用Html.FromHtml生成富文本后,需要给TextView配置MovementMethod来启用超链接的点击响应,具体代码如下:
string Content = "<span>Please navigate to <a href='https://www.website.com'>HERE</a> to register</span>"; // 生成富文本并设置给TextView lblTESTSystem.TextFormatted = Html.FromHtml(Content, FromHtmlOptions.ModeLegacy); // 启用超链接点击功能 lblTESTSystem.MovementMethod = Android.Text.Method.LinkMovementMethod.Instance; // 可选:移除点击超链接时的高亮背景 lblTESTSystem.HighlightColor = Android.Graphics.Color.Transparent;
注意事项
- 不要给整个TextView设置点击事件(即注释掉的那段代码),否则会覆盖超链接的独立点击响应
FromHtmlOptions.ModeLegacy用于兼容低版本Android,若项目最低API版本较高,可替换为FromHtmlOptions.ModeCompact
内容的提问来源于stack exchange,提问作者angleUr
相关产品推荐
相关产品推荐

