我有一个正在运行的计时器。单击文本视图时会启动和停止。我想要做的就是让它在运行时点击布局/屏幕上的任意位置来停止计时器。但是,我也不希望它点击它下面的任何内容。说,我点击一个按钮,我不希望它也点击该按钮。只需停止计时器。
不幸的是,我似乎无法完成最后一部分。任何线索?这就是我所拥有的:
//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;
}
}
});
答案 0 :(得分:1)
当然,最直接的方法是在其他点击监听器中进行条件检查if (bTimerRunning)
。
或者您可以创建自定义视图。扩展任何View类并添加这些
MyClickListener listener;
@Override
public boolean onTouchEvent(MotionEvent ev) {
listener.onClick();
return true;
}
public interface MyClickListener{
public void onClick();
}
关键是这个视图会消耗触摸事件,当它触发onClick
侦听器时,你可以使用它来停止你的计时器。
将此视图添加到填充屏幕的所有其他视图的顶部,并将背景颜色设置为透明。当计时器运行时,将可见性设置为可见,并在不可见时消失。