Android版本未按预期显示SimpleDateFormat

时间:2015-03-06 07:24:29

标签: java android date

        @Override
        public void onTick(long millisUntilFinished) {
            Date date = new Date(millisUntilFinished);
            SimpleDateFormat formater = new SimpleDateFormat("m:ss.S");

            timeRemaining.setText(formater.format(date));
        }

这是我的onTick方法中CountDownTimer的代码。我的问题是在2个不同的Android设备(4.4.4)& (5.0)文字显示不同。

在4.4.4上,它显示为m:ss.SSS

在5.0上,它显示为预期的m:ss.S

这是在任何显示文本的方法(debug,Toast,TextView)中再现的,所以它不是显示或字体问题,它与SimpleDateFormat

First Image INCORRECT(Android 4.4.4)

INCORRECT (Android 4.4.4)

Second Image CORRECT(Android 5.0) enter image description here

2 个答案:

答案 0 :(得分:1)

这种行为实际上是正常的。看看SimpleDateFormat文档。

S小秒(数字)978

没有" SSS",小数秒(又名" S")可以是任何值(最有可能在0到1000之间)。

编辑:你最终也可以解决这个问题:

                Date date = new Date();
                String myTimerString = new SimpleDateFormat("m:ss.", Locale.ENGLISH).format(date);
                String myTimerFraction = new SimpleDateFormat("S", Locale.ENGLISH).format(date);
                if (myTimerFraction.length()>1)
                    myTimerFraction = myTimerFraction.substring(0,1);
                myTimerString += myTimerFraction;

答案 1 :(得分:0)

可能与不同text size的不同设备上的dpi相关。您必须为不同的设备创建不同的<dimen>尺寸。

  

时间可能格式正确,但根本没有显示    具有不同dpi的设备(我的意思是最后两个字符没有显示,但它们存在于那里)

所以代替:

android:textSize="36sp"

使用类似的东西:

android:textSize="@dimens/text_size" />

其中dimens文件夹包含在不同的values folders text size中(例如:values>dimens.xmlvalues-xxhdpi>dimens.xml

注意: 另外请确保您没有使用Settings>Font size。如果你想避免这种情况,那么你必须摆脱sp,而是使用dp