您可以使用以下代码来拦截子元素的Touch事件和Click事件:

public class InterceptTouchClickListener implements View.OnTouchListener, View.OnClickListener {

    private long lastClickTime = 0;
    private static final long DOUBLE_CLICK_TIME_DELTA = 300; // 双击事件的时间间隔

    @Override
    public boolean onTouch(View v, MotionEvent event) {
        // 拦截子元素的Touch事件
        return true;
    }

    @Override
    public void onClick(View v) {
        long clickTime = System.currentTimeMillis();
        if (clickTime - lastClickTime < DOUBLE_CLICK_TIME_DELTA) {
            // 双击事件
            onDoubleClick(v);
        } else {
            // 单击事件
            onSingleClick(v);
        }
        lastClickTime = clickTime;
    }

    private void onSingleClick(View v) {
        // 处理单击事件
    }

    private void onDoubleClick(View v) {
        // 处理双击事件
    }
}

然后,在您的Activity或Fragment中,将该拦截器设置给您的Desk布局:

Desk desk = findViewById(R.id.desk);
InterceptTouchClickListener interceptTouchClickListener = new InterceptTouchClickListener();
desk.setOnTouchListener(interceptTouchClickListener);
desk.setOnClickListener(interceptTouchClickListener);

这样,您就可以拦截Desk布局中的子元素的Touch事件和Click事件了

compose for desk中拦截子元素的touch事件和click事件

原文地址: https://www.cveoy.top/t/topic/ifRQ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录