-1

我有一个启动计时器的按钮,但我希​​望可以选择在延迟后启动计时器。为了实现这一点,我进行了设置,以便您可以长按按钮并获得一个对话框,其中包含有关如何启动计时器的替代选项。

Button start = (Button)findViewById(R.id.StartStop);
        start.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
                builder.setTitle(R.string.PickTimingMethod);
                builder.setItems(R.array.TimeOptions, new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        Toast.makeText(MainActivity.this, i + "", Toast.LENGTH_LONG).show();
                    }
                });
                builder.create().show();
            }
        });

它的行为并不完全符合我的要求。在我释放开始按钮之前,长按事件不会触发。相反,即使您继续按住按钮,我也希望在按下 1 秒后触发长按事件。

我可以通过长按来做到这一点吗?还是我需要另一种方法,也许是使用 OnTouch 的方法?

4

1 回答 1

2

你应该看看View.OnLongClickListener,那会做你想要的。就像你说的,View.OnClickListener只有当你松开手指时才会被解雇。

start.setOnLongClickListener(new View.OnLongClickListener() {
    @Override
    public boolean onLongClick(View v) {
        AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
        builder.setTitle(R.string.PickTimingMethod);
        builder.setItems(R.array.TimeOptions, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                Toast.makeText(MainActivity.this, i + "", Toast.LENGTH_LONG).show();
            }
        });
        builder.create().show();

        return true;
    }
});
于 2013-06-25T15:07:10.757 回答