Android Chronometer格式

Alt*_*taf 8 android

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

Sté*_*ane 18

第一个提案 - 仅留给历史

Chronometer c;
...
c.setFormat("HH:MM:SS");
Run Code Online (Sandbox Code Playgroud)

请参阅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));
    }
});
Run Code Online (Sandbox Code Playgroud)


Pau*_*uki 8

似乎发布以前答案的人甚至没有尝试他们的建议.它根本不像他们描述的那样工作.
请参考如何更改天文台的格式?为了更合适的答案.


a14*_*14m 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");
    }
}
Run Code Online (Sandbox Code Playgroud)

我在方法中调用了这个方法,onCreate()例如.

Chronometer c = ...
...
formatChronometerText(c);
c.setText("00:00:00");
Run Code Online (Sandbox Code Playgroud)

我将在一天内回来验证它是否有效,或者在文本大小发生变化后也需要调用它.如果你是一个谨慎的人,我建议你用c.start()和在相同的上下文中调用它c.stop()

if(ticking){
    c.stop();
    formatChronometerText(c);
} else {
    formatChronometerText(c);
    c.start()
}
Run Code Online (Sandbox Code Playgroud)