我有一个项目,我已经覆盖了onTouchEvent()并注册了点击并在其中移动。我的屏幕上也有按钮。我正在尝试将方法连接到按钮,即:
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注册点击?如果是这样,有什么方法可以区分来自多个按钮的点击?
答案 0 :(得分:2)
但按钮点击似乎没有注册。是因为 我还要覆盖onTouchEvent()?
是。当onTouch()
方法返回true
时,Android会认为该事件已被使用,并且不会将其传递给其他各种触摸处理程序(我认为它包含onClickListener
)。
如果是这样,我应该通过MotionEvents注册点击吗?
你可以做到这一点。或者根据您的情况,只需从方法中返回false
,然后让onClickListener完成工作。
如果是这样,有什么方法可以区分来自的点击次数 多个按钮?
onTouch(final View v, final MotionEvent event)
正如您所看到的,onTouch()方法具有View
类型作为参数。您可以通过获取v.getId()
来检查视图的ID,并将此ID与您期望的Button 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
}
...
}