我有一个 TextView,其中填充了我从服务器获取的文本。我正在使用 Linkify用于处理所有链接搜索并在其 addLinks 方法中根据需要设置 URLSpan。
问题是点击链接时的默认行为是在浏览器中打开它,我想要的是获取点击的链接并自行处理。
我没有看到任何让我设置“OnClick”或其他东西的 Linkify 方法...
感谢您的帮助:)
最佳答案
好的,所以我终于设法将自己的“OnClickListener”设置为 TextView 的链接。
我的解决方案是将 Linkify
复制到我的项目中,将其命名为 CustomLinkify
并更改其 applyLink
方法:
来自:
private static final void applyLink(String url, int start, int end, Spannable text)
{
URLSpan span = new URLSpan(url);
text.setSpan(span, start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
收件人:
private static final void applyLink(final String url, int start, int end, Spannable text)
{
URLSpan span = new URLSpan(url)
{
@Override
public void onClick(View widget)
{
_onLinkClickListener.onLinkClicked(url);
}
};
text.setSpan(span, start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
其中 _onLinkClickListener
是一个新字段,由我在使用新的 CustomLinkify
之前设置。
我知道这不是一个非常优雅的解决方案,我更喜欢谷歌允许通过本地 Linkify 设置监听器,但是,对我来说,这比实现我自己的 Spannable
逻辑更好(如建议的其他相关问题)。
我相信 Linkify
代码,我想我会不时检查它是否有任何更改,如果有,我当然会更新 CustomLinkify
进行更改。
希望这会对某人有所帮助。
关于android - 在使用 Linkify 查找和设置文本内的链接时处理对 TextView 链接的点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20242000/