Android:onTouchEvent()和onClick事件
我有一个项目,在这个项目中,我重写了onTouchEvent(),并在其中注册点击和移动。我在屏幕上也有按钮。我正在尝试将方法连接到按钮,即:Android:onTouchEvent()和onClick事件,android,button,touch,Android,Button,Touch,我有一个项目,在这个项目中,我重写了onTouchEvent(),并在其中注册点击和移动。我在屏幕上也有按钮。我正在尝试将方法连接到按钮,即: public void onButtonClick(View view) { System.out.println("Here"); } 我可以将该方法连接到按钮,该连接显示在xml中: <Button android:id="@+id/button" android:layout_width="wrap_content"
public void onButtonClick(View view) {
System.out.println("Here");
}
我可以将该方法连接到按钮,该连接显示在xml中:
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onButtonClick"
android:text="Button"
tools:layout_editor_absoluteX="89dp"
tools:layout_editor_absoluteY="139dp" />
但是按钮单击似乎未注册。是因为我也重写了onTouchEvent()?如果是这样,我应该通过MotionEvents注册点击吗?如果是这样,有什么干净的方法来区分来自多个按钮的点击
但是按钮单击似乎未注册。是因为
我还重写了onTouchEvent()
对。当代码> OnTouChuy()/代码>方法返回<代码> true时,Android将认为该事件已被消耗,不会传递给其他各种触摸处理程序(我认为它包括<代码> OnCLICKISTENER )。
如果是这样,我应该通过MotionEvents注册点击吗
你可以做到。或者,根据您的条件,只需从方法返回false
,然后让onClickListener完成工作
如果是这样的话,有什么干净的方法来区分点击的来源
多个按钮
onTouch(最终视图v,最终运动事件)
如您所见,onTouch()方法将View
类型作为参数。您可以通过获取v.getId()
来检查视图Id,并将此Id与您期望的按钮Id进行比较。您可以执行以下操作:
@Override
public boolean onTouch(final View v, final MotionEvent event) {
if(v.getId()==R.id.button1){
//Click is coming from Button with id button1 (specified in layout.xml as android:id="@+id/button1").
//Do something for click
}
...
}
但是按钮单击似乎未注册。是因为
我还重写了onTouchEvent()
对。当代码> OnTouChuy()/代码>方法返回<代码> true时,Android将认为该事件已被消耗,不会传递给其他各种触摸处理程序(我认为它包括<代码> OnCLICKISTENER )。
如果是这样,我应该通过MotionEvents注册点击吗
你可以做到。或者,根据您的条件,只需从方法返回false
,然后让onClickListener完成工作
如果是这样的话,有什么干净的方法来区分点击的来源
多个按钮
onTouch(最终视图v,最终运动事件)
如您所见,onTouch()方法将View
类型作为参数。您可以通过获取v.getId()
来检查视图Id,并将此Id与您期望的按钮Id进行比较。您可以执行以下操作:
@Override
public boolean onTouch(final View v, final MotionEvent event) {
if(v.getId()==R.id.button1){
//Click is coming from Button with id button1 (specified in layout.xml as android:id="@+id/button1").
//Do something for click
}
...
}