1

私は自分のアプリケーションを上から見た(透明な)ビューを持っています。
これは、5 秒間の長押しをキャッチしてメニューを開くことになっています。だから私は OnTouchListener を実装しました。このような :

public boolean onTouch(View v, MotionEvent event)
                {       
                        long downtime = 0;
                        long eventt = 0;


                        boolean returnvalue = false; 

                        switch (event.getAction() & MotionEvent.ACTION_MASK) 
                        {

                        case MotionEvent.ACTION_DOWN:
                             eventt = event.getEventTime();                         
                             returnvalue = true; 
                             break;

                        case MotionEvent.ACTION_UP:

                            downtime = event.getDownTime();
                            if (eventt - downtime > 5000)
                            {
                                Main.changePlayerDialog.show();
                                returnvalue = true;
                            }
                            else
                            { 
                                returnvalue = false;
                                //return false;
                            }
                            break;

                        default: 
                                break;
                       }                

                        return returnvalue;

                    }
                });

今、5秒間タッチして離すと、これは問題なく機能します。ただし、5 未満の場合は false を返します。ただし、MotionEvent はその下にある他のビューには渡されません。そのため、下にあるビューのすべてのボタンなどは「無効」になりました...

すぐに false を返すと、すべて正常に動作します...しかし、基になるボタンがトリガーされた場合、ACTION_UP はトリガーされなくなります。(論理的に思えますが、イベントは別の場所で処理されています)。

どうすればこれを修正できますか?

4

1 に答える 1

0

あなたは戻ってみましたか:

return super.onTouch(v, event);

?

- - 編集

そうですね、そうすれば:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
     >

    <Button
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="coucou"
        android:id="@+id/button" />


    <LinearLayout  android:id="@+id/linear"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
         />

</RelativeLayout>

そして、線形レイアウトにonTouchを追加し、ボタンをクリックすると、ボタンはイベントをキャッチしません...

于 2012-02-15T10:29:02.480 に答える