このページを正しく表示するにはJavascriptを有効にしてください。
AndroidでViewが重なった時の誤タップを防ぐ
AndroidのNavigationDrawerなどを利用していると、
Viewが複数重なった状態になることがよくあると思います。
この時、前面のViewでタッチを検出するタイプのViewでないと、
背後にあるViewが勝手にタップされてしまうみたいな現象が起こります。
## 対策
これを防ぐには、「前面のViewの範囲を広げる」「前面のViewをタップ可能にしてしまう」「Java側の制御でイベントをハンドリングする」みたいなやり方がありますが、SecureViewというものを利用するのが一番良さそうです。
## SecureViewとは
SecureViewとは前面に偽装のViewを置いて、ユーザーに意図しない操作をさせるようなことを防ぐ仕組みです。OAuthの認証を隠して勝手にログインさせたり、入金操作を行わせたりだといった不正を防ぐ事ができるみたいです。
これの利点はXMLのみで簡単に設定できること、Viewが隠れているか(透明なViewを含む)でタップを可能にするかを切り替えるので誤動作が少ないという点です。
[Secure Viewを用いてタッチイベントをフィルタリングする](http://techbooster.jpn.org/andriod/ui/2448/)
## 設定方法
タップの誤検知を防ぎたいボタンなどに
```android:filterTouchesWhenObscured="true"```
を設定するだけです。
注意としては前面にあるViewに設定するものでは無いこと、
押される可能性のあるボタン全てに設置する必要があることでしょうか。