1

ビューを手に負えないものにするにはどうすればよいですか。フレーム レイアウトで互いに積み重ねられた 2 つのキャンバス ビューがあります。どちらのキャンバスも画面全体を占め、どちらも透明です。上部のキャンバスに PNG を表示し、ユーザーが下部のキャンバスに描画できるようにします。

問題は、ユーザーが画面に触れたときに、タッチ入力が上部のキャンバスで取得され、何もしない (下部のキャンバスに描画する) ため、何も起こらないことです。

上部のキャンバスを、インタラクションやイベントが割り当てられていないオーバーレイ ビューとして機能させたいと考えています。これらはすべて、下部のビューで使用する必要があります。上部のオーバーレイを非表示に設定すると、下部のキャンバスに描画できます (下部のキャンバスがすべての入力を受け取るようになったため)。

また、キャンバスは標準キャンバスではなく、カスタム キャンバスです。View クラスから直接派生しています。しかし、派生ビューは問題を引き起こさないと思います。どうやって進めばいいのかわからない。

上のキャンバスで onTouch() を使用し、下のキャンバスで onTouch() を呼び出してみましたが、うまくいきませんでした。私は2つのボタンでdispatchTouch()のような他のものをテストしていますが、私には何も確実ではないようです. 助けていただければ幸いです。

編集:XMLレイアウトコードを追加

<FrameLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <com.samsung.sdraw.CanvasView 
        android:id="@+id/canvas1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="cnvs1Click"
        android:text="Canvas1" />

    <com.samsung.sdraw.CanvasView 
        android:id="@+id/canvas2" 
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:text="Canvas2" 
        android:onClick="cnvs2Click"/>
</FrameLayout>

しかし、私はまだビューによって問題が解決されると思います。キャンバスはS ペン SDKからのものです

4

2 に答える 2

1

これは特殊なケースであり、これが真であるかどうかを確認するためにプレイしたことはありませんが、通常、onTouchイベントなどでは、イベントを処理していない場合はfalseを返し、イベントは各ビューのタッチイベントで何かが発生するまでバブルします。 trueを返します。これは、ヒットが処理されたことを示します。

1つのビュー(上位レイヤー)がonTouchからfalseを返すようにすると、下位ビューのonTouchがイベントを受信するはずです。

于 2012-05-03T09:08:46.370 に答える
0

XMLで試して、ルートビューに追加してください

android:focusable="false"
android:focusableInTouchMode="false"
于 2012-05-03T09:08:27.123 に答える