如何将 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] =].
我最终从那些遇到上述问题的人的帖子中得到了答案,所以我在这里提供这个特定问题的答案。
下面的方法将使从 start
到 end
的文本部分可点击。
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。
有很多关于如何在 TextView
中 启用 links 的答案,但我找不到关于如何制作的任何信息TextView
中的 [部分] 文本看起来像带有自定义操作的 link。换句话说,我想 伪造一个 link,因为该操作不够重要,无法获得按钮。我不希望它看起来像页面上的主要操作。
例如,在我的关于对话框中,我想显示文本 "Open Source Licenses",让它看起来像 link,但启动我的 OpenSourceLicensesActivity
而不是实际的 [=28] =].
我最终从那些遇到上述问题的人的帖子中得到了答案,所以我在这里提供这个特定问题的答案。
下面的方法将使从 start
到 end
的文本部分可点击。
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。