我想在点击中隐藏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并再次设置文本。我仍然想知道如何用正确的代码解决这个问题。
答案 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();
}
}
}