2013-04-16 51 views
3

我在我的項目中工作,我有一個listView,每個項目都是一個LinaerLayout,它具有帶Linkify超鏈接的TextView。 所以,當我按List視圖中的一個項目時,它會打開一個對話框,這很好。 當我按下listView中的鏈接文本時,它會打開一個對話框,這很好。 問題:當我在列表視圖中長按鏈接文本時,它會同時打開對話框和給定鏈接的活動!在這種情況下,我只希望它只打開對話框。 換句話說,我想忽略Linkify的長按超鏈接。 有誰知道我該怎麼做? 我不知道在哪裏應用LongPress屬性...在此先感謝。Android - 如何停止長按Linkify?

僅供參考,我試過以下,但不起作用。

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

回答

6

你需要一個longClick標記,將其設置在TextView的longclicklistener時,在touchlistener,當行動等於MotionEvent.ACTION_UP和longClick是真實的,返回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); 
    } 
}); 

這個問題happend電話。