2

私はトリッキーな状況にあります。助けていただければ幸いです。線形レイアウトで次々と水平に配置されたいくつかのビュー (TextViews) があります。textview1 を押すと、指を他の textview にドラッグしてタッチを離すと、指が離されたビュー (textview) を取得できるようになります。

TouchListener api を調べたところ、すべてのイベントが ACTION_DOWN イベント アクションで始まると書かれています。他のテキストビューはそのイベントを発生させないので、指を離したテキストビューへの参照を取得するにはどうすればよいですか? 私も試してみましたが、action_up は、action_down イベントを発生させた textView でのみ発生します。

    @Override
    public boolean onTouch(View v, MotionEvent event) {
    switch (event.getActionMasked()) {
    case MotionEvent.ACTION_UP:
        Log.i(TAG, "ACTION_UP");
        Log.i(TAG, ((TextView) v).getText().toString());
        break;

    case MotionEvent.ACTION_DOWN:
     Log.i(TAG, "ACTION_DOWN");
     Log.i(TAG, ((TextView)v).getText().toString());
     break;
    }

    return true;
}

どんな助けでも大歓迎です。ありがとうございました

4

1 に答える 1

2

LinearLayout ですべてのタッチ イベントを処理し、子ビュー (child.getLeft() および child.getRight()) の場所を確認する必要があります。

public boolean dispatchTouchEvent(MotionEvent event){
    int x = event.getX();
    int cc = getChildCount();
    for(int i = 0; i < cc; ++i){
        View c = getChildView();
        if(x > c.getLeft() && x < c.getRight()){
            return c.onTouchEvent(event);
        }
    }
    return false;
}
于 2013-03-24T05:13:16.290 に答える