我创建了一个可以重用的小部件/控件,它是通过扩展RelativeLayout
创建的。然后,在我的一个活动中,我在一个循环中创建了一堆这样的小部件。然而,当我想让每个小部件都响应点击时,我遇到了一个问题。
我发现设置OnTouchListener
是可行的:
this.setOnTouchListener(new OnTouchListener(){
public boolean onTouch(View arg0, MotionEvent arg1) {
//Triggers debug message
}
});
但OnClickListener
并非如此:
this.setOnClickListener(new View.OnClickListener(){
public void onClick(View v) {
//Doesn't trigger debug message
}
});
为什么会这样呢?
发布于 2011-03-12 23:34:01
以下是一些检查,以确保您的视图是可点击的:
View.setClickable()
View.setEnabled()
View.setFocusable()
View.setFocusableInTouchMode()
根据您希望获得的确切行为,您需要将其中一个或多个设置为on。因为你得到的是onTouch事件,我猜你需要setClickable。但我必须查看视图创建代码才能确定。
发布于 2011-03-12 23:37:29
你应该确保TouchListener没有“消费”触摸事件。如果你从onTouch()
方法返回true,安卓将认为它被消耗了,而不会把它传递给其他各种触摸处理程序(我假设它会包括ClickListener)。
您应该执行以下操作:
this.setOnTouchListener(new OnTouchListener(){
public boolean onTouch(View arg0, MotionEvent arg1) {
//Triggers debug message
return false;
}
});
发布于 2012-04-26 13:55:24
要在onTouch()
中执行此返回false,如下所示:
this.setOnTouchListener(new OnTouchListener(){
public boolean onTouch(View arg0, MotionEvent arg1) {
return false;
}
});
https://stackoverflow.com/questions/5283293
复制相似问题