1

私の Android アプリケーションは、基本的に「SurfaceHolder.Callback」インターフェイスを実装する Surface View です。ほぼリアルタイムで 2 次元データのグラフを表示しています。また、Surface View に重ねていくつかの追加データを表示する Text View を追加しました。

私の現在の問題は、Surface View がさまざまなジェスチャとタッチを処理するのに、Text View がタッチをインターセプトしているように見えることです。

イベントを Text View から基になる (文字通り、相対レイアウトで) Surface View に渡して処理するにはどうすればよいですか??

ありがとう、
R.

4

1 に答える 1

0

私はこれを行う必要がないことを望んでいました(自分の質問に答えてください)が、SOに関するいくつかの投稿から私が知っていると思うことは次のとおりです。

Android 相対レイアウトでは、「一番上」のビューが最初にイベントを取得します。私の場合、Surface View の上にある Text View は何もしないと想定されているため、すべてのイベントをスタックの「下」に渡す必要がありました。私はこれでそれを達成しました:

textView.setOnTouchListener (new View.OnTouchListener()
{
    @Override
    public boolean onTouch (View v, MotionEvent event)
    {
        return false;
    }
});

これに関する厄介な部分 (私の意見では) は、次のような問題に関する Android ヘルプ テキストの欺瞞的な性質です。

「戻り値 - リスナーがイベントを消費した場合は true、それ以外の場合は false。」

これのトーンは、原因と結果が逆になっているように思えます (これも私の意見です)。つまらないことだと思いますが、テキストはおそらく、「イベントが消費されるべきであることを示すためにTRUEを返し(OSによってそう思われる)、そうでない場合はfalse」という行に沿って何かを言うべきです。

于 2012-09-28T12:59:02.437 に答える