修复 Codename One 轻量级日期选择器的外观

Fix appereance of a Codename One lightweight date picker

同一个Codename One轻量级picker有以下两种出现方式(区别是Android上的“01/01/00”和iPhone上的“01/01/2000”)。

Android

iPhone

我需要解决两个关于外观的问题。第一个是日期:“01/01/00”不好,“01/01/2000”更好,“1 gennaio 2000”(意大利语本地化)是我在两种操作系统上都喜欢的。

第二个是选择器的内部布局:在 iPhone 屏幕截图中,您可以看到日期选择器没有居中,而是靠左对齐。如果它在两个操作系统的中心对齐会更好。 Android 上也有同样的问题,但不太明显(在本例中)。

可以使用以下方法自定义日期格式:

 picker.setFormatter(mySimpleDateFormat);

这应该允许您明确定义格式。默认是使用您的设备设置,这解释了它们之间的区别。

请注意,您应该使用 com.codename1.l10n.SimpleDateFormat 而不是 java.text 版本。

关于居中,我不确定是否可行。这也是 iOS 中原生选择器的一个痛点。您可以就此提交 RFE,我们可以试一试。

也许另一个机会是像下面这样的,为了最大程度的定制:

Picker value = new Picker() {
    @Override
    protected void updateValue() {
        if (getDate() == null) {
            setText(" ");
            return;
        }
        setText(L10NManager.getInstance().formatDateLongStyle(getDate()));
    }
};