我在TextModeLayout中使用模拟器(带有Android皮肤)尝试了两个PickerComponents。我不喜欢字符串的PickerComponent在未选择状态下显示三个点。我也不喜欢Date的PickerComponent显示今天的日期。在这两种情况下,我想显示自定义文本,也因为我不想要默认的选定值。例如,如果我想选择出生日期,我觉得预设今天的日期并不合理。
经过大量试验,我尝试使用以下代码解决此问题,但我不确定这是否是正确的方法。我的问题是什么是便携式方式中最好的approch(适用于Android和iOS):
/**
* Set a custom text for an unselected PickerComponent placed in a
* TextModeLayout
*
* @param picker
* @param text
*/
private void pickerComponentSetUnselectedText(PickerComponent picker, String text) {
picker.getPicker().setText(text);
picker.getPicker().setUIID("TextHint");
picker.getPicker().addActionListener(l -> {
l.getComponent().setUIID("TextField");
});
}
我尝试使用该方法:
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");
答案 0 :(得分:1)
选择器组件有两个部分,一个文本不是原生的,但弹出窗口是(并且这是大多数问题的根源)。
如果你做了什么,那就去吧。从历史上看,我们建议继承选择器并覆盖updateValue
,但是PickerComponent
无法做到这一点,所以我添加了一个新方法,该方法应该在下次更新中提供:
PickerComponent cmp = new PickerComponent() {
protected Picker createPickerInstance() {
return new Picker() {
protected void updateValue() {
// place your logic here.. and invoke setText(...);
}
};
}
};