Android Chronometer格式

时间:2011-02-04 11:53:10

标签: android

如何将Android Chronometer格式设置为HH:MM:SS ??

5 个答案:

答案 0 :(得分:17)

第一个提案 - 仅留给历史记录

Chronometer c;
...
c.setFormat("HH:MM:SS");

请参阅http://developer.android.com/reference/android/widget/Chronometer.html#setFormat%28java.lang.String%29


编辑 - 这在根本不起作用!对于太快,未经测试的答案感到抱歉...... 这是有用的东西:

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");
            }
        }
 });