+ -
当前位置:首页 → 问答吧 → [已解决] AlertDialog 会拦截 MotionEvent.ACTION_MOVE 吗?

[已解决] AlertDialog 会拦截 MotionEvent.ACTION_MOVE 吗?

时间:2011-11-01

来源:互联网

我想自订一个可以卷动图片的 ImageView:在接收到 MotionEvent.ACTION_MOVE 时以移动量来 scroll view
但执行后无论我怎么滑都没反应,Log 出来后发现只收到 ACTION_DOWN 事件,完全收不到 ACTION_MOVE
Activity 本身并无 override onTouch(),那是不是被上层的 AlertDialog 给拦截掉了呀?
是的话有办法叫它吐出来吗

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
// method in a class extends Android.app.Activity
private void showImage( final Bitmap image ){ final ScrollableImageView view = new ScrollableImageView( this ); view.setScaleType( ImageView.ScaleType.CENTER ); view.setImageBitmap( image ); AlertDialog.Builder builder = new AlertDialog.Builder( this ); builder.setView( view ); builder.setPositiveButton( R.string.alert_dlg_close, new DialogInterface.OnClickListener(){ public void onClick( DialogInterface dialog, int which ){} } ); builder.show();
}
 
class ScrollableImageView extends ImageView implements OnTouchListener{ public ScrollableImageView( Context context ){ super( context ); setOnTouchListener( this ); }
  @Override public boolean onTouch( View v, MotionEvent event ){ switch( event.getAction() ){ case MotionEvent.ACTION_DOWN: Log.d( "Test", "ACTION_DOWN" ); break; case MotionEvent.ACTION_MOVE: Log.d( "Test", "ACTION_MOVE" ); break; } return false; }
}


PS.这也一样
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class ScrollableImageView extends ImageView{ public ScrollableImageView( Context context ){ super( context ); }
  @Override public boolean onTouchEvent( MotionEvent event ){ switch( event.getAction() ){ case MotionEvent.ACTION_DOWN: Log.d( "Test", "ACTION_DOWN" ); break; case MotionEvent.ACTION_MOVE: Log.d( "Test", "ACTION_MOVE" ); break; } return false; }
}

作者: Kaworucloud   发布时间: 2011-11-01

不将 view 丢进 AlertDialog,直接设为 activity 的 content view,结果一样无法收到 MotionEvent.ACTION_MOVE
代表不是被 AlertDialog 吃了,而是被 ImageView 本身吃了

最后发现 onTouchEvent 必须 return true,MotionEvent.ACTION_DOWN 之后的事件才会被分派下来

作者: Kaworucloud   发布时间: 2011-11-01