从文本视图上的超链接打开一个对话框 - Android

时间:2014-05-26 12:48:54

标签: android hyperlink dialog textview

有一种方法可以在textView上添加某些单词中的链接,当我单击该单词时,会打开一个对话框。

例如:TextView - >单词A - 单词B - 单词C

当我点击Word A时,显示带有一些选项的Dialog,当我点击Word C时,打开另一个带有其他选项的对话框。

我查了这个链接,但我的问题不合适。

Open a popup/alert before opening a link in the browser when clicked on a textview

任何人都可以提供帮助吗?

1 个答案:

答案 0 :(得分:5)

假设您有一个“this is a test” String并希望显示子字符串“this”的对话框A和子字符串“test”的对话框B.请考虑以下方法:

private static void applySpan(SpannableString spannable, String target, ClickableSpan span) {
  final String spannableString = spannable.toString();
  final int start = spannableString.indexOf(target);
  final int end = start + target.length();
  spannable.setSpan(span, start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}

该方法需要spannable,在其中搜索第一个target次出现并将span应用于该spannable。要在TextView中显示Activity,例如@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); final SpannableString spannable = SpannableString.valueOf(“this is a test”); applySpan(spannable, "this", new ClickableSpan() { @Override public void onClick(View widget) { // show dialog A } }); applySpan(spannable, "test", new ClickableSpan() { @Override public void onClick(View widget) { // show dialog B } }); final TextView textView = new TextView(this); textView.setText(spannableString); textView.setMovementMethod(LinkMovementMethod.getInstance()); setContentView(textView); } ,您可以执行以下操作:

{{1}}

这只是一个粗略的例子,但它有望展示一种解决问题的方法。