Android:在可点击的TextView中使用ClickableSpan

5 浏览
0 Comments

Android:在可点击的TextView中使用ClickableSpan

我有一个TextView,它可以包含可点击的链接。当点击其中一个链接时,我想要启动一个活动。这个功能可以正常工作,但是我也希望能够点击整个TextView来启动另一个活动。

这是我的当前解决方案:

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后,每当我点击一个链接时,首先会调用整个TextView的监听器,然后再调用ClickableSpan的监听器。

有没有办法在链接被点击时阻止Android调用整个TextView的监听器?或者在整个视图的监听器中决定是否点击了链接?

0