从MainActivity收集热情

时间:2015-06-10 13:45:18

标签: android onclick onclicklistener main-activity

我想从整个屏幕上收集所有可能的触摸。我实施了

@Override
   public boolean onTouchEvent(MotionEvent e)
    {
       double x = e.getX();
       double y = e.getY();
    }

但是现在我在"场景中添加了一个TableView"当我点击它时,上面的方法没有被调用,因为TableView正在吞下Touches。 http://i.gyazo.com/d671768c45a0d9576d6ba3b822dfa85d.png

黄色区域周围的所有东西都是可点击的,但黄色区域本身不是。我希望它也是可点击的,基本上我希望所有的时间都可以点击整个屏幕区域,这样我就可以存储触摸位置。怎么做?

编辑: 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>

2 个答案:

答案 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;
            }
        });