4

次のような textView があります。

<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);
}}

しかし、自動リンクを使用している場合、カスタムのクリック可能なスパンが機能しません。自動リンクと独自のクリック可能スパンを一緒に使用するにはどうすればよいですか?

4

1 に答える 1