【问题标题】:Set css from GWT (dynamically) to element with multiple styles associated将 GWT 中的 CSS(动态)设置为具有多个关联样式的元素
【发布时间】:2015-10-04 09:53:20
【问题描述】:

我有一个 TabLayoutPanel 实例,其中选项卡的数量将动态设置。因此,要对齐标签以填充屏幕的整个宽度,我需要

1) 使用 auto !important (done) 覆盖 gwt-TabTayoutPanel 默认值宽度 16384px;

2) 将 gwt-TabTayoutPanelTab 的宽度设置为适当的百分比值(例如 2 个标签 = 50%。3 个标签 = 33%,4 个标签 = 25% 等等)。 我有一个简单的函数,如下所示(简化):

双 cssValue = 100.0/getWidgetCount();

(完成)

3) 现在我的问题是:如何从 Java 设置 gwt-TabTayoutPanelTab 的宽度?我加粗了 Tabs 因为当我使用 this.getStyleName(); 时,我得到了 gwt-TabLayoutPanel 而不是 gwt-TabLayoutPanelTab

总之,我可以将我的问题分为两部分:

-如何从GWT访问TabLayoutPanelTab css类?;

-如何使用我动态生成的百分比数字设置所述类宽度?;

编辑: 正确编辑函数以确定百分比值。

【问题讨论】:

    标签: css gwt gwt-tablayoutpanel


    【解决方案1】:

    -如何从 GWT 访问 TabLayoutPanelTab css 类?;

    int widgetCount = panel.getWidgetCount();
    for(int i = 0; i < widgetCount; i++)
        System.out.println(panel.getTabWidget(i).getParent().getStyleName());
    }
    

    如您所见,无法直接访问这些选项卡。您可以做的是访问选项卡中的小部件,并获取它们的父级,即相关选项卡。

    -如何使用我动态生成的百分比数字设置所述类宽度?;

    • 如果您有一定数量的可能百分比,那么您可以声明这些类(例如 custom-Width-25、custom-width-33 等),您可以在其中使用 !important 注释指定宽度以覆盖所有内容否则。
    • 如果以前的解决方案不可接受,那么您只能使用内联 css。 这意味着该元素必须已经加载到 DOM 中。 在您知道该元素已加载的代码中的某处,您可以调用如下代码:
    int widgetCount = panel.getWidgetCount();
    for(int i = 0; i < widgetCount; i++) {
      com.google.gwt.user.client.Element tabElement = panel.getTabWidget(i).getParent().getElement();
      tabElement.getStyle().setWidth(100/widgetCount, Unit.PCT);
    }
    

    【讨论】:

    • 感谢您的回答!我唯一的修改是使用 Double 类型:double cssWidth = 100.0 / widgetCount()。使用核心 Integer 类型将所有选项卡设置为稍微向左,在右侧留下一个很小的白色边距。使用 Double 所有选项卡都优雅地居中(生成的数字是:宽度:33.3333%);
    • 很高兴能帮上忙,很高兴您能分享更多细节。将来它可能会派上用场。玩得开心。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-08
    • 2014-05-26
    • 1970-01-01
    • 2014-02-01
    • 2012-12-17
    • 1970-01-01
    • 2010-11-01
    相关资源
    最近更新 更多