如何将 TextView 中的文本或部分显示为可点击的 link

How do I display a text or a portion in a TextView as a clickable link

有很多关于如何在 TextView 启用 links 的答案,但我找不到关于如何制作的任何信息TextView 中的 [部分] 文本看起来像带有自定义操作的 link。换句话说,我想 伪造一个 link,因为该操作不够重要,无法获得按钮。我不希望它看起来像页面上的主要操作。

例如,在我的关于对话框中,我想显示文本 "Open Source Licenses",让它看起来像 link,但启动我的 OpenSourceLicensesActivity 而不是实际的 [=28] =].

我最终从那些遇到上述问题的人的帖子中得到了答案,所以我在这里提供这个特定问题的答案。

下面的方法将使从 startend 的文本部分可点击。

public static void makeClickableLink (@NonNull final TextView textView,
                                      @NonNull final CharSequence text,
                                      final int start,
                                      final int end,
                                      @NonNull final ClickableSpan onClick) { 
    final SpannableString span = new SpannableString (text);
    span.setSpan (onClick, start, end, 0);

    textView.setText (span);
    textView.setMovementMethod (LinkMovementMethod.getInstance ());
}

所提供的 ClickableSpan 让您可以这样处理点击事件:

final TextView tv = (TextView)findViewById (android.R.id.text1);    

final ClickableSpan link = new ClickableSpan () {
    @Override public void onClick (final View widget) {
        context.startActivity (new Intent (context, OpenSourceLicensesActivity.class));
    }
};

makeClickableLink (tv, "Click here for OSS Licenses", 5, 9, link);

以上应该here 可以点击,启动你的activity。