4

Vaadin 14(.1.19) 附带了这个时间选择器组件:https ://vaadin.com/components/vaadin-time-picker/java-examples

这是它的样子(当它是只读的时候):

Vaadin Time Picker 组件正常

我怎样才能让这个时间选择器显示像这样居中的时间(这是浏览器中手动操作的屏幕截图(直接在嵌入式输入字段中设置 text-align:center),而不是编程解决方案)?

文本居中的 Vaadin 时间选择器组件

我试图在 Java 代码中设置 text-align 属性但没有效果:

TimePicker timepicker = new TimePicker();
timepicker.getElement().getStyle().set("text-align", "center");

我搜索了一个主题变体。但这似乎只存在于 TextFields 和派生字段:

EmailField emailFeld = new EmailField();
emailFeld.addThemeVariants(TextFieldVariant.LUMO_ALIGN_CENTER);
4

1 回答 1

2

您将需要更改TimePicker'TextField值部分的 shadow DOM 中的 CSS,我们使用主题属性作为附加选择器,以免对所有文本字段进行主题化:

[part="value"] {
    :host([theme~="center"]) text-align: center;
}

通过注释包含 CSS @CssImport,为文本字段设置主题并将主题属性设置为日期选择器。主题属性传播到日期选择器中使用的文本字段:

@CssImport(value = "./styles/my-time-picker-styles.css", themeFor = "vaadin-time-picker-text-field")
public class YourViewOrLayout extends Composite<Div> {
   ...
   timePicker.getElement().setAttribute("theme", "center");
}

我在这个答案中更详细地解释了它。

于 2020-03-16T12:31:22.470 回答