ListView: TextView with LinkMovementMethod makes list item unclickable?

前端 未结 11 749
野的像风
野的像风 2020-11-29 17:33

What I want to do: A list with messages like this:

and here is the mnessage the user writes, that will wrap nicely to the next line.

11条回答
  •  萌比男神i
    2020-11-29 18:24

    The problem is in that LinkMovementMethod indicates that are going to manage the touch event, independiently the touch is in a Spannable or in normal text.

    This should work.

    public class HtmlTextView extends TextView {
    
        ...
    
        @Override
        public boolean onTouchEvent(MotionEvent event) {
            if (getMovementMethod() == null ) {
                boolean result = super.onTouchEvent(event); 
                return result;
            }
    
            MovementMethod m = getMovementMethod();     
            setMovementMethod(null);
    
            boolean mt = m.onTouchEvent(this, (Spannable) getText(), event);
            if (mt && event.getAction() == MotionEvent.ACTION_DOWN) {
                event.setAction(MotionEvent.ACTION_UP);
                mt = m.onTouchEvent(this, (Spannable) getText(), event);
                event.setAction(MotionEvent.ACTION_DOWN);
            }
    
            boolean st = super.onTouchEvent(event);
    
            setMovementMethod(m);
            setFocusable(false);
    
            return mt || st;
        }
    
        ...
    }
    

提交回复
热议问题