2013-04-16 2 views
3

Я работаю над своим проектом, где у меня есть listView, и каждый элемент LINEERLayout имеет TextView с гиперссылкой Linkify. Итак, когда я нажимаю элемент в представлении «Список», он открывает диалоговое окно, в котором все нормально. Когда я нажимаю связанный текст в спискеView, он открывает диалоговое окно, в котором все нормально. ПРОБЛЕМА: Когда я LONG-PRESS связанный текст в Listview, он открывает диалоговое окно И активность данной ссылки в одно и то же время! В этом случае я хочу, чтобы он только открыл диалог. Другими словами, я хочу игнорировать гиперссылку Linkify на длинную печать. Кто-нибудь знает, как я могу это сделать? Я не знаю, где применять атрибуты LongPress ... Спасибо заранее.Android - Как остановить Linkify при длительном нажатии?

FYI, я пробовал следующее, но не работает.

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 верно, возвращает истину.

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

эта проблема случилось в некоторых Телефон.

Смежные вопросы