每次点击视图时调用方法Android - Java

时间:2015-09-03 19:58:36

标签: java android onclicklistener gesture

有没有办法让一个方法在一个活动中发生触摸并获得它的id?

我有一个自定义视图,我添加到相对布局,然后只要在自定义视图外注册,我想隐藏自定义视图。什么是最好的方法。

我尝试将oncliecllistner添加到相对布局但是没有用,因为它只在相对布局上注册了点击,所以当我点击作为相对布局的子项的textview时,它不是调用。由于自定义视图和相对布局在我点击自定义视图时会重叠,因此会将其注册为相对布局的点击

由于

2 个答案:

答案 0 :(得分:0)

一种方法是添加一个透明的空View(让我们给它标识overlayView),它覆盖布局中的所有内容,除了之外,您想要的视图隐藏(让我们给出身份bashful):

<RelativeLayout 
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <!--
         All your existing non-bashful Views must be here, *before* overlayView.
         That gives them a lower Z-order than overlayView.
     -->

    <View
        android:id="@+id/overlayView"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
    />

    <!-- The bashful View must come last, so that it has the highest Z-order. -->
    <View
        android:id="@+id/bashful"
        ...
    />
</RelativeLayout>

然后,在View.OnTouchListener的{​​{1}}(不是View.OnClickListener)中,你可以这样做:

overlayView

此代码假定您有一个引用@Override public boolean onTouch(View v, MotionEvent event) { mBashfulView.setVisibility(View.GONE); } 视图的mBashfulView变量。

只有当用户触及bashful视图之外的任何位置时,才会调用侦听器。

答案 1 :(得分:0)

我强烈建议您使用dispatchTouchEvent()。这是您的活动可以覆盖的功能(具有签名public boolean dispatchTouchEvent(MotionEvent ev)),它将拦截所有触摸事件到屏幕。在此功能中,您将能够决定如何处理触摸事件。如果您确定不想做任何特别的事情,并且应该允许用户的触摸正常进行,请拨打super.dispatchTouchEvent(ev)

一些文件: http://developer.android.com/reference/android/app/Activity.html#dispatchTouchEvent(android.view.MotionEvent)