有一种方法可以在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
任何人都可以提供帮助吗?
答案 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}}
这只是一个粗略的例子,但它有望展示一种解决问题的方法。