如何将Android Chronometer格式设置为HH:MM:SS ??
答案 0 :(得分:17)
第一个提案 - 仅留给历史记录
Chronometer c;
...
c.setFormat("HH:MM:SS");
编辑 - 这在根本不起作用!对于太快,未经测试的答案感到抱歉...... 这是有用的东西:
Chronometer c;
...
c.setOnChronometerTickListener(new OnChronometerTickListener() {
public void onChronometerTick(Chronometer cArg) {
long t = SystemClock.elapsedRealtime() - cArg.getBase();
cArg.setText(DateFormat.format("kk:mm:ss", t));
}
});
答案 1 :(得分:8)
似乎发布以前答案的人甚至没有尝试他们的建议。 它根本不像他们描述的那样工作 有关更合适的答案,请参阅how to change format of chronometer?。
答案 2 :(得分:6)
经过一些测试,我想出了这段代码。它尚未经过全面测试,但如果您
,可以向我提供更多信息private void formatChronometerText(Chronometer c) {
int cTextSize = c.getText().length();
if (cTextSize == 5) {
breakingTime.setFormat("00:%s");
} else if (cTextSize == 7) {
breakingTime.setFormat("0%s");
} else if (cTextSize == 8) {
breakingTime.setFormat("%s");
}
}
我在onCreate()
方法中调用了此方法,例如。
Chronometer c = ...
...
formatChronometerText(c);
c.setText("00:00:00");
我将在一天内回来验证它是否有效,或者在文本大小发生变化后也需要调用它。如果您是一个谨慎的人,我建议您在c.start()
和c.stop()
if(ticking){
c.stop();
formatChronometerText(c);
} else {
formatChronometerText(c);
c.start()
}
答案 3 :(得分:4)
这有效:
Chronometer chronometer;
chronometer.setOnChronometerTickListener(new OnChronometerTickListener() {
public void onChronometerTick(Chronometer c) {
int cTextSize = c.getText().length();
if (cTextSize == 5) {
chronometer.setText("00:"+c.getText().toString());
} else if (cTextSize == 7) {
chronometer.setText("0"+c.getText().toString());
}
}
});
答案 4 :(得分:2)
找到了一个更好的解决方案,每秒都没有为String分配内存:
c.setFormat("00:%s");
c.setOnChronometerTickListener(new OnChronometerTickListener() {
public void onChronometerTick(Chronometer c) {
long elapsedMillis = SystemClock.elapsedRealtime() -c.getBase();
if(elapsedMillis > 3600000L){
c.setFormat("0%s");
}else{
c.setFormat("00:%s");
}
}
});