ユーザーが指で描画できるカスタム ビューを実装しようとしています。基本的に、私はこのチュートリアルに従っています。
すべてがうまく機能しているように見えますが、次のようにカスタム ビューの下に 2 つのボタンもあるという事実を考えると、
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/background_color"
tools:context=".MainActivity"
android:id="@+id/mainScreen" >
<Button
android:id="@+id/buttonSave"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentBottom="true"
android:text="@string/save" />
<Button
android:id="@+id/buttonQuery"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentBottom="true"
android:text="@string/query" />
<com.example.myapp.DrawView
android:id="@+id/drawView"
android:background="@color/red"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_above="@id/buttonSave" />
</RelativeLayout>
実際にはボタンの下でも描画され、DrawView で発生したタッチイベントのみをキャプチャし、その外側ではキャプチャしない理由を理解するのに苦労しています。基本的に、ボタンの上から線を引くことはできませんが、ビューに描画を開始すると、線を外側に延長することもできます。
私が知る限り、ここで説明したように、DrawView はボタンの下にオーバーフローしていないので、何が起こっているのかを把握したいと思います。イベントが範囲外かどうかを本当に確認する必要がありますか? 現在フォーカスされているビューにすべてのタッチ イベントを実際に委譲しますか? この動作を変更する方法はありますか?
この簡単なチュートリアルには、説明されている問題はありませんが、ポイントごとに描画されます。
更新:アプリケーションをデバッグしたところ、drawView のサイズは 480x728 で、mainScreen のサイズは 480x800 であるため、重複していないことがわかりました。フォーカスがあると、drawView の外部でトリガーされた場合でも、タッチ イベントを登録し続けます。これは私が避けようとしているものであり、イベント座標を大きな if ステートメントに渡さずに行うとよいでしょう...