我在使用TabHost的触控侦听器时遇到问题。我想处理所有视图的双击事件,所以我决定将监听器添加到根视图(在我的例子中是TabHost)。
在onCreate of my activity中,我按如下方式设置了视图:
setContentView(R.layout.activity_test);
TabHost tabHost = (TabHost) findViewById(R.id.tabhost);
tabHost.setup();
tabHost.setOnTouchListener(new OnTouchListener() {
private GestureDetector gestureDetector = new GestureDetector(TestActivity.this,
new GestureDetector.SimpleOnGestureListener() {
@Override
public boolean onDoubleTap(MotionEvent e) {
Toast.makeText(TestActivity.this, "Hello World!", Toast.LENGTH_SHORT).show();
return true;
}
});
@Override
public boolean onTouch(View view, MotionEvent event) {
return gestureDetector.onTouchEvent(event);
}
});
TabSpec tab1 = tabHost.newTabSpec(TAG_FIRST_TAB);
tab1.setContent(R.id.first_tab);
...
该应用程序的构建没有任何错误,但如果我启动它并在屏幕上的任何地方双击都没有任何反应。
也许查看我的tabhost布局也会有所帮助:
<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tabhost"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TabWidget
android:id="@android:id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="match_parent"
android:layout_height="match_parent">
// several views for the tabs
</FrameLayout>
</LinearLayout>
</TabHost>