我想从整个屏幕上收集所有可能的触摸。我实施了
@Override
public boolean onTouchEvent(MotionEvent e)
{
double x = e.getX();
double y = e.getY();
}
但是现在我在"场景中添加了一个TableView"当我点击它时,上面的方法没有被调用,因为TableView正在吞下Touches。
黄色区域周围的所有东西都是可点击的,但黄色区域本身不是。我希望它也是可点击的,基本上我希望所有的时间都可以点击整个屏幕区域,这样我就可以存储触摸位置。怎么做?
编辑: onTouchEvent方法位于MainActivity类中。 这是activity_main.xml
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/linearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TableLayout
android:id="@+id/tableLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="10dp"
android:shrinkColumns="*"
android:stretchColumns="*" >
<TableRow android:layout_height="wrap_content">
<TextView
android:id="@+id/column1"
android:text="tapcount"
android:layout_height="wrap_content"
/>
</TableRow>
</TableLayout>
</ScrollView>
</LinearLayout>
答案 0 :(得分:0)
用你自己的透明覆盖整个视图,如下所示:
<RelativeLayout>
<LinearLayout
android:layout_height="fill_parent"
android:layout_width="fill_parent">
<!--your content inside-->
</LinearLayout>
<View
android:id="@+id/cover"
android:layout_height="fill_parent"
android:layout_width="fill_parent"/>
</RelativeLayout>
然后使用id {cover View
的代码,并在false
中一直返回onTouchEvent
,如doc:
带有返回 如果事件被处理则为True,否则为false。
false
硬编码MotionEvent
的将发送到
下方/下方的观看次数答案 1 :(得分:0)
在您的onCreate()
方法中尝试实施类似
View contentView = (View) findViewById(R.id.linearLayout1); //Your layout
contentView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_DOWN){
Toast.makeText(getApplicationContext(), event.getX() + " " + event.getY(), Toast.LENGTH_SHORT).show();
return true;
}
return false;
}
});