У меня есть текстовое представление, которое может содержать интерактивные ссылки. Когда один из этих ссылок нажат, я хочу начать действие. Это прекрасно работает, но также следует щелкнуть по всему текстуру и начать другое действие.
Итак, мое текущее решение:
TextView tv = (TextView)findViewById(R.id.textview01);
Spannable span = Spannable.Factory.getInstance().newSpannable("test link span");
span.setSpan(new ClickableSpan() {
@Override
public void onClick(View v) {
Log.d("main", "link clicked");
Toast.makeText(Main.this, "link clicked", Toast.LENGTH_SHORT).show();
} }, 5, 9, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
tv.setText(span);
tv.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Log.d("main", "textview clicked");
Toast.makeText(Main.this, "textview clicked", Toast.LENGTH_SHORT).show();
}
});
tv.setMovementMethod(LinkMovementMethod.getInstance());
Проблема в том, что когда я устанавливаю OnClickListener, каждый раз, когда я нажимаю на ссылку first прослушиватель для всего текста , а затем, вызываемый для ClickableSpan.
Есть ли способ предотвратить андроид от вызова слушателя для всего текста, когда нажимается ссылка? Или решить в слушателе для всего представления, если ссылка была нажата или нет?