【Android】ActivityのonTouchEventが呼ばれない
次のActivityとレイアウトの組み合わせで試すとonTouchEventが呼ばれませんでした。
Activity
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override public boolean onTouchEvent(MotionEvent event) { Log.d("onTouchEvent","call"); return super.onTouchEvent(event); } }
レイアウト
<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:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.example.testtouchevent.MainActivity" > <ListView android:layout_width="match_parent" android:layout_height="match_parent" > </ListView> </RelativeLayout>
どうやらListViewの下にはタッチイベントが通らないみたい?。
解決策としてはdispatchTouchEventを使用すること。
dispatchTouchEventはonTouchEventより早くコールされるようです。
ListViewのタッチイベントより先に呼ばれているっぽい
@Override public boolean dispatchTouchEvent(MotionEvent ev) { Log.d("DispatchTouchEvent","call"); return super.dispatchTouchEvent(ev); }