假如给你一个“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)
这只是一个粗略的例子,但它有望展示一种解决问题的方法.
| 归档时间: |
|
| 查看次数: |
1693 次 |
| 最近记录: |