我正在我的项目中工作,这里有一个listView,每个项目都是一个LinaerLayout,其中的TextView具有Linkify超链接。
因此,当我在“列表” View 中按一个项目时,它会打开一个对话框,这很好。
当我在listView中按下链接的文本时,它会打开一个对话框,这很好。
问题:当我长按Listview中的链接文本时,它同时打开一个对话框和给定链接的 Activity !在这种情况下,我只希望它仅打开对话框。
换句话说,我想在长按时忽略Linkify的超链接。
有人知道我该怎么做吗?
我不知道在哪里应用LongPress属性...预先感谢。

仅供引用,我尝试了以下操作,但不起作用。

public class URLSpanNoUnderline extends URLSpan implements OnLongClickListener {
    public URLSpanNoUnderline(String url) {
        super(url);
    }

    @Override
    public void updateDrawState(TextPaint textPaint) {
        super.updateDrawState(textPaint);

        textPaint.setUnderlineText(false);
    }

    @Override
    public void onClick(View v) {}

    @Override
    public boolean onLongClick(View v) {
        Log.d("log", "lonnnnnnnnnnnnnnnng click");
        return false;
    }
}

最佳答案

您需要一个longClick标记,将其设置为在textview中的longclicklistener和touchlistener中,当 Action 等于MotionEvent.ACTION_UP且longClick为true时,返回true。

textview.setOnLongClickListener(new View.OnLongClickListener() {
    @Override
    public boolean onLongClick(View v) {
        isLongClick= true;
        return false;
    }
});

textview.setOnTouchListener(new View.OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        if(event.getAction() == MotionEvent.ACTION_UP && isLongClick){
            isLongClick= false;
            return true;
        }
        if(event.getAction() == MotionEvent.ACTION_DOWN){
            isLongClick= false;
        }
        return v.onTouchEvent(event);
    }
});

这个问题发生在某些手机上。

关于Android-如何在长按时停止Linkify?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16047215/

10-11 14:36