2013-10-03 2 views
1

У меня есть LinearLayout, который появляется в середине экрана и сверху (zorder) моего списка. Этот Linearlayout состоит из нескольких кнопок.Сделайте вид, не получив событие прокрутки, но просто коснитесь события

Мне бы хотелось, чтобы при прокрутке этого LinearLayout он не поймал событие и не перешел в список под списком. И когда кнопка нажата, они получают событие onClick.

Я надеюсь, это ясно ...

+0

Другими словами ... Проблема в том, что у меня есть липкий вид над списком. Этот липкий вид состоит из кнопок, которые захватывают весь липкий вид. У вас есть идея, чтобы передать прокрутку в виде списка, а также щелчок по кнопкам на кнопках.? – gbero

ответ

0

Для получения дополнительной информации, это, как я решить мою проблему. Надеюсь, что код ясен ...

private Point p1; 
private Point p2; 
private int mTouchSlop; 

public StickyView(Context context, AttributeSet attrs) { 
    super(context, attrs); 

    ViewConfiguration vc = ViewConfiguration.get(context); 
    mTouchSlop = vc.getScaledTouchSlop(); 
} 

@Override 
public boolean onInterceptTouchEvent(MotionEvent ev) { 
    if (ev.getAction() == MotionEvent.ACTION_UP || ev.getAction() == MotionEvent.ACTION_CANCEL) { 
     listView.onTouchEvent(ev); 
     return super.onInterceptTouchEvent(ev); 
    } else if (ev.getAction() == MotionEvent.ACTION_MOVE) { 
     p2 = new Point(0, (int) ev.getY()); 
     double distance = Math.sqrt(Math.pow(p1.x - p2.x, 2) + Math.pow(p1.y - p2.y, 2)); 
     if (Math.abs(distance)> mTouchSlop) { 
      listView.onTouchEvent(ev); 
      return super.onInterceptTouchEvent(ev); 
     } 
     p1 = p2; 
    } else if (ev.getAction() == MotionEvent.ACTION_DOWN) { 
     p1 = new Point(0, (int) ev.getY()); 
     listView.onTouchEvent(ev); 
    } 
    return super.onInterceptTouchEvent(ev); 
} 
Смежные вопросы