4

Mozilla Firefox 和 Ubuntu Software Center 等应用程序能够将标题栏渐变向下扩展到其工具栏区域。示例如下:

说明 Ubuntu Unity 中扩展标题栏效果的屏幕截图

如何在我的应用程序中实现相同的效果?

4

1 回答 1

3

首先,您提到的两个应用程序是使用不同的工具包和技术构建的,因此采用不同的方法来做您愿意做的事情。虽然 Firefox 使用XUL/GTK2,但 USC 使用GTK3. 我将解释这两种方法。

  1. Ubuntu 软件中心是使用 构建GTK3的,因此它的工具栏渐变是在主题 css 文件中定义的。实现这一点的代码是

    /* primary-toolbar */
    .primary-toolbar,
    .primary-toolbar .toolbar,
    .primary-toolbar.toolbar {
    -GtkWidget-window-dragging: true;
    
    background-image: -gtk-gradient (linear, left top, left bottom,
                                     from (shade (@dark_bg_color, 0.96)),
                                     to (shade (@dark_bg_color, 1.4)));
    border-bottom-color: shade (@dark_bg_color, 1.1);
    border-top-color: shade (@dark_bg_color, 1.09);
    border-style: solid;
    border-width: 1px 0 1px 0;
    
    color: @dark_fg_color;
    text-shadow: 0 -1px shade (@dark_bg_color, 0.7);
    
    box-shadow: inset 0 1px shade (@dark_bg_color, 0.94);
    }
    

    为了在您的 gtk3 应用程序中使用它,您必须将类分配primary-toolbar给您的工具栏。有关这方面的适当文档,请查看此处

  2. Firefox 是使用 XUL 构建的,并使用 GTK2 在 GNU/Linux 发行版(如 Ubuntu)上呈现小部件。Firefox的样式tab-bar来自相关主题文件中menubar定义的外观定义。gtkrc在默认主题 Ambience 的情况下,它是

    style "menubar" = "dark" {
      engine "murrine" {
        textstyle = 2
        text_shade = 0.33
        gradient_shades = {1.0, 1.0, 1.0, 1.0}
        lightborder_shade = 1.0
      }
    }
    

在其他工具包中可以通过不同的方法来实现效果,但是建议您在gtk3中编写您的应用程序,以便使用原生样式。

于 2012-12-14T05:47:55.597 回答