2

私はアンドロイドが初めてで、setonclicklistenerとsetonTouchlistenerの両方が一度に機能するという要件があります.imがimageview.someコードを持っているアダプタ側で何らかの操作を実行しています.

アダプタ クラス:

public class Taukygridview extends BaseAdapter{

holder.imageview.setOnClickListener(new OnClickListener() {

//some click operation here
});

holder.imageview.setonTouchListener(new MyTouchListener());

holder.imageview.setonTouchListener(new MyDragListener());

}

MyTouchListener クラスの説明は次のとおりです。

public class MyTouchListener implements OnTouchListener
{
    private Context mcontext;
    public static int view_position=0;
    public static View first_image_view;

@Override
    public boolean onTouch(View v, MotionEvent event) {
        // TODO Auto-generated method stub
//some touch operation here
}
}

ここでは、ドラッグ操作について説明します。

public class MyDragListener implements OnDragListener
{
@Override
    public boolean onDrag(View v, DragEvent event) {
// TODO Auto-generated method stub
   switch(v.getId):
{
  //some drag operation here

}
}

したがって、アプリの実行中はタッチ操作のみが機能し、タッチ操作が false を返す場合は、クリック操作のみが機能しますが、操作を省略または構成することはできません (実際には、選択のためにクリックを実行し、ドラッグ アンド ドロップ操作のためにタッチを実行しています) .だから、上記の操作を無効にせずにすべての操作を行う方法を教えてください。返信は非常に役に立ちます。ありがとう

4

2 に答える 2

3

ご覧のとおりpublic boolean onTouch(View v, MotionEvent event)、ブール値を返します

true ( return true;) に設定すると、イベントが消費されるため、OnClickListenerはトリガーされません。

false ( return false;) に設定すると、画面を離すとOnClickListener

ところで、あいまいなバグにはつながらない!!!!!!!!

于 2013-06-17T05:53:23.210 に答える
2

タッチ イベントを操作しているときは、基本的に組み込みのジェスチャ検出 (クリック/ロング クリックなどを処理します) をオーバーライドしています。実行可能ですが、非常にあいまいなバグにつながる可能性があるため、使用しないことをお勧めします。

代わりに、GestureDetectorSimpleGestureDetectorとハンドルonTapUpConfirmedおよびで使用しonScrollます。

于 2013-04-09T12:49:22.407 に答える