You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android TextClock设置format12Hour后模拟器正常实体机显示错误如何解决

问题原因

  1. 仅为TextClock配置了format12Hour属性,未配置对应format24Hour属性。三星设备如果开启系统24小时制,TextClock会优先使用24小时格式渲染,未配置的情况下会调用系统默认格式,导致显示不符合预期。
  2. 时间大小单位使用错误:tvTime的textSize属性写为45dp,字体大小应使用sp单位,避免系统字体调整时显示异常。
  3. 未指定固定格式化Locale,不同厂商系统默认语言区域不同,会导致MMM这类月份缩写的显示结果和模拟器不一致。

修复方案

  1. 给两个TextClock都添加format24Hour属性,和format12Hour配置保持一致,确保无论系统开启12/24小时制,显示格式都统一。
  2. 将tvTime的textSize单位从dp改为sp。
  3. 如果需要固定显示英文月份,不受系统语言影响,可在代码中手动指定Locale。

修复后XML代码

<TextClock
    android:id="@+id/tvDate"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="10dp"
    android:format12Hour="dd MMM yyyy"
    android:format24Hour="dd MMM yyyy"
    android:textColor="#FFFFFF"
    android:textSize="20sp"
    android:textStyle="bold"
    app:layout_constraintEnd_toEndOf="@+id/tvTime"
    app:layout_constraintStart_toStartOf="@+id/tvTime"
    app:layout_constraintTop_toBottomOf="@+id/tvTime"
    tools:visibility="visible" />

<TextClock
    android:id="@+id/tvTime"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="20dp"
    android:format12Hour="hh:mm:ss"
    android:format24Hour="hh:mm:ss"
    android:textColor="#FFFFFF"
    android:textSize="45sp"
    android:textStyle="bold"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    tools:visibility="visible" />

固定英文月份的补充代码(可选)

如果需要强制显示英文月份,在对应Activity的onCreate方法中添加如下代码即可:

// Kotlin 示例
val tvDate = findViewById<TextClock>(R.id.tvDate)
tvDate.format12Hour = android.text.format.DateFormat.format("dd MMM yyyy", java.util.Locale.ENGLISH)
tvDate.format24Hour = android.text.format.DateFormat.format("dd MMM yyyy", java.util.Locale.ENGLISH)
// Java 示例
TextClock tvDate = findViewById(R.id.tvDate);
tvDate.setFormat12Hour(android.text.format.DateFormat.format("dd MMM yyyy", java.util.Locale.ENGLISH));
tvDate.setFormat24Hour(android.text.format.DateFormat.format("dd MMM yyyy", java.util.Locale.ENGLISH));

内容的提问来源于stack exchange,提问作者Khamnueng Pongsakorn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 22:00:04