如何在计时器运行时禁用所有布局的事件?

时间:2015-04-27 14:06:49

标签: android layout timer

我有一个正在运行的计时器。单击文本视图时会启动和停止。我想要做的就是让它在运行时点击布局/屏幕上的任意位置来停止计时器。但是,我也不希望它点击它下面的任何内容。说,我点击一个按钮,我不希望它也点击该按钮。只需停止计时器。

不幸的是,我似乎无法完成最后一部分。任何线索?这就是我所拥有的:

  //set on Click listener for whole layout:
    RelativeLayout bSheetLayout = (RelativeLayout) findViewById(R.id.bout_sheet);
    bSheetLayout.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            //if timer is running, stop timer

            if (bTimerRunning) {

                TextView etTimer = (TextView) findViewById(R.id.tvTimer);

                //perform timer click
                //will pause timer 
                etTimer.performClick();

                return;

            }
        }
    });

1 个答案:

答案 0 :(得分:1)

当然,最直接的方法是在其他点击监听器中进行条件检查if (bTimerRunning)

或者您可以创建自定义视图。扩展任何View类并添加这些

MyClickListener listener;

@Override
public boolean onTouchEvent(MotionEvent ev) {
    listener.onClick();
    return true; 
}

public interface MyClickListener{
    public void onClick(); 
}

关键是这个视图会消耗触摸事件,当它触发onClick侦听器时,你可以使用它来停止你的计时器。 将此视图添加到填充屏幕的所有其他视图的顶部,并将背景颜色设置为透明。当计时器运行时,将可见性设置为可见,并在不可见时消失。