【发布时间】:2014-03-28 17:44:14
【问题描述】:
我有一个这样的文本视图:
<TextView
android:id="@+id/note_viewer"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:autoLink="email|web|phone"
android:textSize="15sp" />
还有一个像这样的 Spannable 字符串:
String input = note.getText();
SpannableStringBuilder builder = new SpannableStringBuilder(input);
Pattern pattern = Pattern.compile(XTAG_PATTERN);
Matcher matcher = pattern.matcher(input);
while (matcher.find()) {
int start = matcher.start();
int end = matcher.end();
String text = input.subSequence(start, end).toString();
ClickableURLSpan url = new ClickableURLSpan(text, getActivity()
.getApplicationContext(), this);
builder.setSpan(url, start, end, 0);
}
noteView.setText(builder);
noteView.setMovementMethod(LinkMovementMethod.getInstance());
还有一个像这样的自定义 `URLSpan 类:
public class ClickableURLSpan extends URLSpan {
Context context;
NoteViewFragment noteViewFragment;
public ClickableURLSpan(String url,Context c, NoteViewFragment noteViewFragment) {
super(url);
context=c;
this.noteViewFragment=noteViewFragment;
}
@Override
public void onClick(View widget) {
String clickedText = getURL();
Intent i=new Intent(context,SearchActivity.class);
i.putExtra("tag", clickedText);
noteViewFragment.startActivity(i);
}}
但是当我使用自动链接时,我的自定义可点击范围不起作用。如何同时使用自动链接和我自己的可点击范围?
【问题讨论】:
-
String input = ...,String 不是 Spanned,使用 Spanned iface 保留 spans
-
如果我在文本视图中删除自动链接效果很好
-
我现在明白了,当您设置自定义跨度时?
-
我使用 SpannableStringBuilder 创建跨度并使用 noteView.setText(builder); 设置整个文本
标签: android regex textview autolink urlspan