Codenameone Codename One-自定义未选定选择器组件的文本

Codenameone Codename One-自定义未选定选择器组件的文本,codenameone,Codenameone,我用模拟器(Android皮肤)在TextModeLayout中尝试了两个PickerComponents。我不喜欢字符串的PickerComponent在未选中状态下显示三个点。我也不喜欢日期的PickerComponent显示今天的日期。在这两种情况下,我都希望显示自定义文本,这也是因为我不想要默认的选定值。例如,如果我想选择出生日期,我觉得预设今天的日期没有意义 经过多次尝试,我试图用以下代码解决这个问题,但我不确定这是否是一个正确的方法。我的问题是什么是便携方式的最佳方法(对于Andro

我用模拟器(Android皮肤)在TextModeLayout中尝试了两个PickerComponents。我不喜欢字符串的PickerComponent在未选中状态下显示三个点。我也不喜欢日期的PickerComponent显示今天的日期。在这两种情况下,我都希望显示自定义文本,这也是因为我不想要默认的选定值。例如,如果我想选择出生日期,我觉得预设今天的日期没有意义

经过多次尝试,我试图用以下代码解决这个问题,但我不确定这是否是一个正确的方法。我的问题是什么是便携方式的最佳方法(对于Android和iOS都可以):

我尝试使用该方法,以便:

  TextModeLayout textModeLayout = new TextModeLayout(4, 1);
    Container inputPersonData = new Container(textModeLayout);

    TextComponent name = new TextComponent().label("Nome");
    TextComponent surname = new TextComponent().label("Cognome");
    PickerComponent gender = PickerComponent.createStrings("Maschio", "Femmina", "altro").label("Genere");
    PickerComponent date = PickerComponent.createDate(new Date()).label("Data di nascita");

    inputPersonData.add(name);
    inputPersonData.add(surname);
    inputPersonData.add(gender);
    inputPersonData.add(date);

    pickerComponentSetUnselectedText(gender, "Genere");
    pickerComponentSetUnselectedText(date, "Data di nascita");

选择器组件有两个部分,其中一个文本不是本地的,但是弹出窗口是本地的(这是大多数问题的根源)

如果你所做的一切奏效,那就随它去吧。从历史上看,我们建议对picker进行子类化并重写
updateValue
,但不可能使用
PickerComponent
,因此我添加了一个新方法,该方法应在下一次更新中可用:

PickerComponent cmp = new PickerComponent() {
    protected Picker createPickerInstance() {
        return new Picker() {
            protected void updateValue() {
              // place your logic here.. and invoke setText(...);
            }
        };
    }     
};
PickerComponent cmp = new PickerComponent() {
    protected Picker createPickerInstance() {
        return new Picker() {
            protected void updateValue() {
              // place your logic here.. and invoke setText(...);
            }
        };
    }     
};