Android:添加"内部"链接到TextView的一部分,链接到我的代码中的操作

Gui*_*ume 6 android hyperlink textview

正如标题所解释的那样,我想添加链接给我TextView,这两个警告:

  • 我希望链接作用于一部分,而TextView不是完整的部分(类似于AHTML中的锚点).

  • 我希望链接指向我的代码中的操作,而不是网站.我可以在我的活动中定义一个方法,或者实现一个方法OnClickListener,并在单击该特定链接时执行该方法.

到目前为止,我成功地使用以下方法将电话号码,地址,网站和电子邮件转换为专用外部链接:

Linkify.addLinks(message, Linkify.ALL);
Run Code Online (Sandbox Code Playgroud)

我想要内部链接(对我的方法)类似的东西,可以定义自定义链接.

此外,使用具有内部链接和Web视图的网页实际上不是一个选项,因为我已经定义了几个复杂的布局,并且必须修改整个应用程序和概念将是一个非常痛苦...

任何的想法?

编辑: Kabuko给了我一个非常好的解决方案,这正是我实现它的方式:

final TextView descriptionTextView = (TextView) findViewById(R.id.description);
final Spannable span = Spannable.Factory.getInstance().newSpannable("the full text for the view");
span.setSpan(new ClickableSpan() {
    @Override
    public void onClick(View widget) {
        Toast.makeText(StartEventActivity.this, "LINK CLICKED", Toast.LENGTH_SHORT).show();
    }
}, 1, 20, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); // 1 and 20 to be replaced with actual index of start and end of the desired link
descriptionTextView.setText(span);
descriptionTextView.setMovementMethod(LinkMovementMethod.getInstance());
Run Code Online (Sandbox Code Playgroud)

kab*_*uko 5

如果你想真正使用你可以使用的URL Html.fromHtml,但如果你想要自己的点击处理程序,你可以使用ClickableSpan.