2015-06-10 15 views
0

我想从整个屏幕收集所有可能的接触。我实现了一个收集MainActivity的接触

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

但现在我添加了一个TableView中的“场景”,当我点击它上面的方法不会被调用,因为TableView中正在吞噬润色。 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> 
+0

你在哪里实施的onTouchEvent以及如何建立你的布局文件? –

+0

onTouchEvent在MainActivity中,你的意思是“你的布局文件是如何构建的?”检查上面的activity_main.xml,我编辑了帖子。 – L3M0L

回答

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 =盖用你的代码View并在onTouchEvent返回总是false为在doc中:

返回 如果处理事件,则为true,否则为false。

false硬编码MotionEvent会在你onCreate()方法传递到下面的意见/

0

下尝试执行这样的事情

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; 
      } 
     }); 
+0

这个解决方案不适合我:/不知道为什么,但onTouch事件没有被触发。 – L3M0L

+0

你把监听器放在你的底座布局上吗?我在我的一个应用程序中测试过它,它似乎工作得很好 – Galax