不会调用TextView的OnClickListener

时间:2015-01-11 12:07:19

标签: android textview onclicklistener spanned linkmovementmethod

我的Android应用程序中有几个文本链接,它们是电子邮件地址网络链接。我使用以下代码片段进行设置(Web链接示例):

TextView textView = (TextView) findViewById(textViewId);
spannedText = Html.fromHtml("<a href=\"" + url + "\">" + titleText + "</a>");
textView.setText(spannedText, TextView.BufferType.SPANNABLE);
textView.setMovementMethod(LinkMovementMethod.getInstance());
textView.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        // Handle click
    }
});

TextView设置了特殊属性,例如android:linksClickableandroid:clickableandroid:focusable。它的风格继承自@android:style/TextAppearance.Small

由于某种原因,OnClickListener永远不会被调用。

3 个答案:

答案 0 :(得分:3)

删除此代码

textView.setMovementMethod(LinkMovementMethod.getInstance());

并手动添加以下链接

textView.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        // Handle click
        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
        startActivity(intent);

    }
});

答案 1 :(得分:0)

无法从您粘贴的代码片段中分辨出来。请显示更多代码。例如,你的textView声明是什么样的?

答案 2 :(得分:0)

您是否在父视图上有一个可能覆盖文本视图的onClick侦听器?您也可以尝试不使用匿名内部类作为侦听器,而是使用下面的view.OnClickListener进行单击事件。

myActivity extends Activity implements View.OnClickListener {
    @Override
    publiv void onClick(View v) {
        if(V.getId() == textViewId) {
             // do work
        }
    }
}