在FrameLayout上触摸事件

时间:2013-09-29 02:54:37

标签: android events touch android-framelayout

我有这样的布局:

  • RelativeLayout的
    • 的FrameLayout
      • 片段(谷歌地图图层)
    • 复选框
    • ......其他按钮和内容

现在,我希望在选中FrameLayout时捕获Checkbox上的触摸事件。我使用dispatchTouchEvent而不是onTouch,但问题是当我按下复选框按钮时,我也会得到触摸响应。我想排除它,但我无法弄清楚它是如何工作的......

我是否需要创建一个新类?

这是我的代码,剥离了很多:

public class Main extends Activity implements LocationListener, OnTouchListener {

  @Override
  protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    FrameLayout frame = (FrameLayout) findViewById(R.id.mapFrame);
    frame.setOnTouchListener((OnTouchListener) this);
  }

  public boolean onTouch(View v, MotionEvent e) {

    //doing things

    return true;
  }
}

1 个答案:

答案 0 :(得分:1)

这是你想要做的吗?

public class Main extends Activity implements LocationListener, OnTouchListener {

  private FrameLayout mFrame;

  @Override
  protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    mFrame = (FrameLayout) findViewById(R.id.mapFrame);
    mFrame.setOnTouchListener(this);
  }

  public boolean onTouch(View v, MotionEvent e) {

    if(mFrame == v) {

      // do things

      return true;
    }

    return false;
  }
}