在任何时候点击视图时调用方法Android-Java
有没有办法在活动中发生触摸时调用方法并获取其id 我有一个自定义视图,我将其添加到相对布局中,然后每当点击在该自定义视图之外注册时,我都希望隐藏该自定义视图。最好的办法是什么在任何时候点击视图时调用方法Android-Java,java,android,onclicklistener,gesture,Java,Android,Onclicklistener,Gesture,有没有办法在活动中发生触摸时调用方法并获取其id 我有一个自定义视图,我将其添加到相对布局中,然后每当点击在该自定义视图之外注册时,我都希望隐藏该自定义视图。最好的办法是什么 我尝试向相对布局中添加一个onClickListner,但没有成功,因为它只在相对布局上注册点击,所以当我点击作为相对布局子级的textview时,它没有被调用。由于自定义视图和相对布局有时会重叠,当我点击自定义视图时,它会注册为点击相对布局 谢谢一种方法是添加一个透明的空视图让我们给它一个id overlayView,它
我尝试向相对布局中添加一个onClickListner,但没有成功,因为它只在相对布局上注册点击,所以当我点击作为相对布局子级的textview时,它没有被调用。由于自定义视图和相对布局有时会重叠,当我点击自定义视图时,它会注册为点击相对布局
谢谢一种方法是添加一个透明的空视图让我们给它一个id overlayView,它覆盖了布局中的所有内容,除了您想要隐藏的视图让我们给它一个id羞涩: 这段代码假设您有一个mBashfulView变量,该变量引用了bashful视图 只有当用户触及害羞视图之外的任何位置时,才会调用侦听器。我强烈建议使用dispatchTouchEvent。这是一个活动可以覆盖的函数,其签名为public boolean dispatchTouchEventMotionEvent ev,它将截获屏幕上的所有触摸事件。在该功能中,您将能够决定如何处理触摸事件。如果您确定不想做任何特殊的事情,并且应该允许用户的触摸正常进行,只需调用super.dispatchTouchEventev 一些文件:
我尝试在相对布局中添加一个onclustner,但没有成功。-请发布您的代码并解释哪些不起作用。将onClickListener添加到您的RelativeLayout以隐藏您的自定义视图。这将使单击自定义视图也隐藏它,因此将onClickListener添加到自定义视图只是为了截获单击事件。@Gudin如果我将侦听器添加到自定义视图,我如何知道何时有点击到自定义视图外部以隐藏它?向顶视图添加另一个侦听器,例如代表整个屏幕的相对布局。@Gudin我最初做的是向相对布局添加一个点击侦听器
<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>
@Override
public boolean onTouch(View v, MotionEvent event) {
mBashfulView.setVisibility(View.GONE);
}