我正在为我的android创建一个计时器应用程序。它从指定时间(即8分钟)倒计时到0。
我已将其编码为应用程序启动时显示指定的时间。当您点击TextView
显示开始倒计时的时间时,会更新TextView
事件中的onTick()
。当您再次单击TextView
时,它将停止倒计时并保存剩余的毫秒数,以便在下次点击TextView
时恢复(基本上暂停时钟)。
一切都按预期工作。但是,单击TextView
时,它会消失,直到释放单击。如果我按住了3秒钟,那么TextView
完全消失,并在释放后立即重新出现。
如何停止此行为以继续显示TextView
整个时间的值?
编辑:
tvPeriod.setOnLongClickListener( new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
valPeriod = 1;
tvPeriod.setText( tvPeriodPrefix + "1" );
return true;
}
});
答案 0 :(得分:0)
你可以做一些事情,比如将背景设置为颜色,甚至透明。实际上在较低级别,Button是TextView的后代,因此可以解释为什么它可以像Button一样。
答案 1 :(得分:0)
尝试使用此示例代码。
import android.os.Bundle;
import android.os.CountDownTimer;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.TextView;
public class MainActivity extends Activity {
TextView tv;
CountDownTimer countDownTimer;
boolean isRunning = false;
long remainingTime = 90000;
long elapsedTime = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv = (TextView) findViewById(R.id.tv1);
tv.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (isRunning) {
isRunning = false;
countDownTimer.cancel();
remainingTime = elapsedTime;
} else {
countDownTimer = new CountDownTimer(remainingTime, 1000) {
public void onTick(long millisUntilFinished) {
elapsedTime = millisUntilFinished;
tv.setText("seconds remaining: "
+ millisUntilFinished / 1000);
}
public void onFinish() {
tv.setText("done!");
}
}.start();
isRunning = true;
}
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}