0

過去2日間、Android API7で簡単なドラッグアンドドロップ機能を作成しようとしていますが、常に問題が発生します。今タッチリスナーで。onTouchListenerを使用していますが、onTouchメソッドは、UI要素で画面を押したときにのみ呼び出されます。別の場所で画面を押してから、指定されたonTouchListenerを使用して要素の上に指を移動しても、何も起こりませんでした。なんで?UI要素が配置されている場所で画面をクリックせずにタッチイベントをキャッチできるAndroid用のリスナーはありますか?今日は夢中になっているので助けてくれてありがとう;)

4

1 に答える 1

0

onTouchListener はビューのみに使用しています。U は任意のレイアウトに使用できます (ex の場合は LinearLayout)。「fill_parent」パラメーターを使用したレイアウトの場合、すべての画面で機能します。また、ACTION_DOWN、UP、および MOVE パラメータを制御する必要があります。たぶん、このサンプルはあなたを助けるでしょう:

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.LinearLayout;

public class main extends Activity implements OnTouchListener{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    LinearLayout ll =(LinearLayout)this.findViewById(R.id.ll);
    ll.setOnTouchListener(this);
}

@Override
public boolean onTouch(View v, MotionEvent event)
{
    int action=event.getAction();
    StringBuilder str=new StringBuilder();
    str.append("\nActrion type: ");

    switch(action)
    {
        case MotionEvent.ACTION_DOWN: str.append(«ACTION_DOWN\n»);break;
        case MotionEvent.ACTION_MOVE: str.append(«ACTION_MOVE\n»);break;
        case MotionEvent.ACTION_UP: str.append(«ACTION_UP\n»);break;
    }

    Log.v(«Mytag», str.toString());
    return true;
}
}
于 2012-08-11T20:56:10.757 に答える