tpo*_*pow 20 android ontouchlistener android-view onclicklistener
我创建了一个小部件/控件,我可以重用我通过扩展创建的RelativeLayout.然后,在我的一个活动中,我在循环中创建了一堆这些小部件.但是,当我想让每个小部件响应一次点击时,我遇到了一个问题.
我发现设置OnTouchListener有效:
this.setOnTouchListener(new OnTouchListener(){
public boolean onTouch(View arg0, MotionEvent arg1) {
//Triggers debug message
}
});
Run Code Online (Sandbox Code Playgroud)
但OnClickListener不是:
this.setOnClickListener(new View.OnClickListener(){
public void onClick(View v) {
//Doesn't trigger debug message
}
});
Run Code Online (Sandbox Code Playgroud)
为什么是这样?
nic*_*ild 49
您应该确保TouchListener没有"消耗"触摸事件.如果你从onTouch()方法中返回true ,Android会认为它被消耗了,而不是传递给其他各种触摸处理程序(我假设它将包含ClickListener).
你应该做:
this.setOnTouchListener(new OnTouchListener(){
public boolean onTouch(View arg0, MotionEvent arg1) {
//Triggers debug message
return false;
}
});
Run Code Online (Sandbox Code Playgroud)
Nic*_*ion 16
以下是一些要检查的内容,以确保您的观看次数可以点击:
View.setClickable()
View.setEnabled()
View.setFocusable()
View.setFocusableInTouchMode()
Run Code Online (Sandbox Code Playgroud)
根据您希望获得的确切行为,您需要将其中一个或多个设置为开启.由于你正在进行onTouch事件,我猜你需要setClickable.但我必须确保视图创建代码.
小智 5
要执行此操作,请在此处返回false onTouch():
this.setOnTouchListener(new OnTouchListener(){
public boolean onTouch(View arg0, MotionEvent arg1) {
return false;
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21128 次 |
| 最近记录: |