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

Raf*_*dão 3 android dialog hyperlink textview

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

例如:TextView - > Word A - Word B - Word C.

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

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

在文本视图中单击时,在浏览器中打开链接之前打开弹出/警报

有人可以帮忙吗?

Tad*_*dej 5

假如给你一个“this is a test” String你希望显示对话框中的子字符串“this”的子串和对话乙“test”.请考虑以下方法:

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);
}
Run Code Online (Sandbox Code Playgroud)

该方法采用a spannable,搜索其中的第一个target匹配项并应用span它.要显示spannablea TextView,例如来自a 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);
}
Run Code Online (Sandbox Code Playgroud)

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