@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)
Second Image CORRECT(Android 5.0)
答案 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.xml
和values-xxhdpi>dimens.xml
)
注意: 另外请确保您没有使用Settings>Font size
。如果你想避免这种情况,那么你必须摆脱sp
,而是使用dp