3

我正在通过扩展 LinearLayout 创建自定义小部件。我的自定义小部件中的一个元素是线性布局,从另一个布局膨胀。当我设置 OnClickListener 时,它没有响应。你能给些建议么?

谢谢!

4

3 回答 3

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 
}
于 2015-09-17T13:32:55.223 回答
1

您是否声明了 LinearLayout 可点击?

您可以在 XML 中执行此操作:

安卓:可点击=“真”

或在 Java 代码中:

myLinearLayout.setClickable(true);

另请参阅有关此问题的其他 StackOverflow 线程:

线性布局上的 onClickListener

于 2011-04-29T21:15:12.017 回答
1

确保将 LinearLayout 中的所有子元素放入 android:clickable="false"。比 myLinearLayout.setClickable( true ) 更适合我。

于 2021-02-12T11:14:08.623 回答