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

Android DatePickerDialog升级minSdk到26后月份显示M+数字异常如何修复

问题原因

该异常是Android 8.0(API level 26)版本后,原生DatePickerDialog的本地化格式适配逻辑变更导致的:当构造对话框使用的Context未明确指定Locale配置时,部分场景下会触发月份格式化异常,显示为M+数字的格式。

可行解决方案

方案1:使用本地化Context构造对话框(最稳妥,无需修改资源配置)

修改你的showDatePickerDialog方法,在创建DatePickerDialog前先构造适配了系统默认Locale的Context,替换原Context传入构造方法即可,修改后代码如下:

public static void showDatePickerDialog(Context context, DatePickerCallback datePickerCallback) {
    Calendar calendar = Calendar.getInstance();
    int buttonColor = ContextCompat.getColor(context, R.color.black);

    // 新增:构造适配系统默认Locale的上下文,解决日期格式化异常
    Configuration config = new Configuration(context.getResources().getConfiguration());
    config.setLocale(Locale.getDefault());
    Context localizedContext = context.createConfigurationContext(config);

    // 这里替换为localizedContext创建对话框
    DatePickerDialog datePickerDialog = new DatePickerDialog(localizedContext, R.style.DatePickerDialogTheme, (view, year, month, dayOfMonth) -> {
        calendar.set(Calendar.YEAR, year);
        calendar.set(Calendar.MONTH, month);
        calendar.set(Calendar.DAY_OF_MONTH, dayOfMonth);
        datePickerCallback.onDateSelected(calendar.getTime()); 
    }, calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH));
    
    datePickerDialog.show();
    datePickerDialog.getButton(DialogInterface.BUTTON_NEGATIVE).setTextColor(buttonColor);
    datePickerDialog.getButton(DialogInterface.BUTTON_POSITIVE).setTextColor(buttonColor);
}

方案2:修改自定义主题配置

如果你不想修改代码逻辑,可以在你定义的R.style.DatePickerDialogTheme中补充以下属性,强制指定日期选择器的样式格式:

<style name="DatePickerDialogTheme" parent="Theme.AppCompat.Light.Dialog">
    <!-- 原有属性保持不变,新增以下配置 -->
    <item name="android:datePickerMode">calendar</item>
    <item name="android:calendarViewShown">true</item>
    <item name="android:spinnersShown">false</item>
</style>

两种方案任选其一即可解决月份显示异常的问题,成功后月份会按照系统Locale的默认格式显示为英文缩写、中文月份等预期样式。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 15:06:02