Android - 无法使用CountDownTimer在一定时间内隐藏textView

时间:2015-03-29 16:34:22

标签: android timer textview countdowntimer

我想在点击中隐藏textView。单击会触发计时器一段时间,在该时间结束后,textView应再次可见。我尝试在点击时隐藏textView,并在public void onFinish()内再次显示它。出于某种原因,textView始终可见。我尝试使用view.setVisability(View.INVISIBLE)view.setVisability(View.GONE),但仍然没有去。
编辑
除了可见性之外,侦听器内的所有其他代码都会根据需要执行。我还需要在xml文件中将textView定义为clickable吗?

编辑2
我故意使用new CountDownTimer(25000, 1000),因为倒数计时器显示在另一个元素中,所以我不仅试图延迟执行。

textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
        textView.setVisibility(View.GONE);
        Log.i("textView: ","clicked");
        if (....){
            new CountDownTimer(25000, 1000) {
            {
             //some code...
            }

            public void onFinish() {
                otherTextView2.setText("done");
                textView.setVisibility(View.VISIBLE);
            }
          }.start();
        }
    }
}


编辑3

我设法隐藏了textView,但这是一个临时的解决方法。点击我设置以下属性:

textView.setText("");
textView.setEnabled(false);


一旦时间到了,我重新启用textView并再次设置文本。我仍然想知道如何用正确的代码解决这个问题。

4 个答案:

答案 0 :(得分:0)

android:clickable="true"添加到XML以获取textview。

确定问题的一个好方法是将log语句放在onClick处理程序中,以查看事件是否实际触发。

答案 1 :(得分:0)

尝试以下:

@Override
public void onClick(View v) {
        v.setVisibility(View.GONE);
        v.postDelayed(new Runnable() {
            @Override
            public void run() {
                v.setVisibility(View.VISIBLE);
            }
    },5000);            
}

答案 2 :(得分:0)

最好使用Handler().postDelayed来实现目标,

    mTextEditGo = (TextView) findViewById(R.id.txt);
    mTextEditGo.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            mTextEditGo.setVisibility(View.INVISIBLE);
            new Handler().postDelayed(new Runnable() {
                @Override
                public void run() {
                    mTextEditGo.setVisibility(View.VISIBLE);
                }
            }, 2000);   // run after 2000ms
        }
    });

答案 3 :(得分:0)

您可以参考onClick侦听器上单击的视图,尝试使用" v"在onclick方法中安装了" textview"你目前正在使用。

即 -

textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
        v.setVisibility(View.GONE);
        Log.i("textView: ","clicked");
        if (....){
            new CountDownTimer(25000, 1000) {
            {
             //some code...
            }

            public void onFinish() {
                otherTextView2.setText("done");
                v.setVisibility(View.VISIBLE);
                v.invalidate();
            }
          }.start();
        }
    }
}