Fragment を重ねて画面遷移させたときに、後ろのFragmentのタッチイベント発生を防ぐ方法の紹介です.

1.問題

後ろに隠したFragmentまでタッチイベントが伝播してしまうのは、このような実装をしているときです.

webFragmentというFragmentに遷移していますが、この遷移後の画面をタッチしたときに、元の画面のタッチイベントが呼ばれるときがあります.

 

2.解決法

1)addを利用しない

 

addの代わりにreplaceを利用することでこの問題は回避できます.

但し、元のFragmentに戻るとOnCreateから再実行することになるので、生成にコストの掛かるFragmentの場合この方法は利用できません.

2)clickableを設定する

追加したFragmentのレイアウトにclickableを設定します.

ここではLinearLayoutを利用していますが、Fragmentの全体を覆っているLayoutであれば何でもかまいません.

このLayoutに android:clickable=”true” を設定することで、これより下にはタッチイベント(およびクリックイベント)が伝播しなくなります.

 

 

 

 

Leave a Reply

Your email address will not be published. Required fields are marked *