我正在通过扩展LinearLayout来创建自定义小部件。我的自定义小部件中的一个元素是线性布局,从另一个布局中膨胀。当我设置OnClickListener它没有响应。你能告诉我吗?
谢谢!
答案 0 :(得分:3)
而不是使用setOnClickListener使用setOnTouchListener 此代码将用作onclick事件
YourLinearLayout.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
boolean returnValue = true;
if(event.getAction()==MotionEvent.ACTION_UP){ //on touch release
returnValue = false; //prevent default action on release
//do something here
}
return returnValue;
}
});
然后将其添加到您的LinearLayout类以拦截子触摸事件
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
return true; //will prevent child touch events
}
答案 1 :(得分:1)
您是否声明了LinearLayout可点击?
您可以在XML中执行此操作:
机器人:可点击= “真”
或Java代码:
myLinearLayout.setClickable(true);
另请参阅此问题上的其他StackOverflow主题:
答案 2 :(得分:1)
确保将 LinearLayout 中的所有子项都设置为 android:clickable="false"。比 myLinearLayout.setClickable( true ) 更适合我。