子のFragmentを重ねた親のFragmentのタッチイベントを無効にする2017年05月01日(編集2017年05月01日)TweetAndroidアプリでFragmentを利用する場合は、Fragmentの上に別のFragmentを重ねることはよくあります。この記事は、親のFragmentに子のFragmentの重ねたとき、親のFragmentのタッチイベントを無効にする方法を記載した記事です。記事の内容を実装したアプリケーションの動画です。親のFragementの上に、FrameLayoutやRelativeLayoutで作成した子のFragmentを重ねると、親のFragmentで設定したclickイベントが重ねた子のフラグメントからも実行されます。上記のサンプルは、子のFragmentをモーダル画面として表示しています。この時、モーダル画面は、下の親Fragmentのイベントも実行してしまいます。この子のFragmentレイアウトxmlファイルは以下です。/></RelativeLayout>Don't.FrameLayoutやRelativeLayout等のレイアウトを重ねたViewは、イベントが下のViewまで伝わります。これはAndroidの仕様です。Viewを重ねてもイベントを取得する必要があるからです。親のFragmentにタッチイベントが伝わらないようにします。/></RelativeLayout>Do.子のFragmentのLayoutにandroid:clickable="true"を追加します。これで親のFragmentのイベントを遮断できます。ビルド上記のコードの動作を確認してみましょう。子のFragmentから親のFragmentのクリックイベントが発火しない親のFragmentのイベントが無効になりました。結論Androidの開発では、Viewの仕組みを知っておくと便利です。開発に慣れてきたらAndroidのソースコードも読んでみましょう。