规范 - 带有进度条的水平面板占据了中间的所有 space
Spec - horizontal panel with progress bar taking all the space in the middle
我想创建一行包含三个元素的标签、进度条和第二个标签。为此,我使用了以下代码:
(SpBoxLayout newLeftToRight
spacing: 15;
add: secondsPassed expand: false;
add: progressBar withConstraints: [ :constraints |
constraints
height: 10;
fill: false;
width: 280 ];
add: timeRemaining expand: false;
yourself)
我已经明确设置了宽度限制,但我想做的是无论行有多宽,它都占据两个标签之间的所有 space。
这样它的宽度是灵活的,两个标签是固定的。
基本上,第一个和第三个设置为expand: false
,第二个设置为expand: true
(这是默认值)。
对于你想要的,这应该足够了:
(SpBoxLayout newLeftToRight
spacing: 15;
add: secondsPassed expand: false;
add: progressBar;
add: timeRemaining expand: false;
yourself)
如果您删除那里的宽度限制,应该允许它扩展,因为大小不再固定。另外,请注意,在 SpBoxLayout
的当前实现中,宽度和高度不能共存,因为它们适用于不同的布局类型:
width
适用于水平(从左到右)布局
height
适用于垂直 (topToBottom) 布局。
假设您安装了 Gtk 后端,此代码:
presenter := SpPresenter new.
presenter application: (SpApplication new useBackend: #Gtk).
presenter layout: (SpBoxLayout newLeftToRight
vAlignStart;
borderWidth: 15;
spacing: 15;
add: (presenter newLabel label: 'One') expand: false;
add: (presenter newProgressBar fixedAt: 50 percent);
add: (presenter newLabel label: 'Two') expand: false;
yourself).
presenter openWithSpec title: 'Example of Horizontal Layout'
将产生此输出:
我想创建一行包含三个元素的标签、进度条和第二个标签。为此,我使用了以下代码:
(SpBoxLayout newLeftToRight
spacing: 15;
add: secondsPassed expand: false;
add: progressBar withConstraints: [ :constraints |
constraints
height: 10;
fill: false;
width: 280 ];
add: timeRemaining expand: false;
yourself)
我已经明确设置了宽度限制,但我想做的是无论行有多宽,它都占据两个标签之间的所有 space。
这样它的宽度是灵活的,两个标签是固定的。
基本上,第一个和第三个设置为expand: false
,第二个设置为expand: true
(这是默认值)。
对于你想要的,这应该足够了:
(SpBoxLayout newLeftToRight
spacing: 15;
add: secondsPassed expand: false;
add: progressBar;
add: timeRemaining expand: false;
yourself)
如果您删除那里的宽度限制,应该允许它扩展,因为大小不再固定。另外,请注意,在 SpBoxLayout
的当前实现中,宽度和高度不能共存,因为它们适用于不同的布局类型:
width
适用于水平(从左到右)布局height
适用于垂直 (topToBottom) 布局。
假设您安装了 Gtk 后端,此代码:
presenter := SpPresenter new.
presenter application: (SpApplication new useBackend: #Gtk).
presenter layout: (SpBoxLayout newLeftToRight
vAlignStart;
borderWidth: 15;
spacing: 15;
add: (presenter newLabel label: 'One') expand: false;
add: (presenter newProgressBar fixedAt: 50 percent);
add: (presenter newLabel label: 'Two') expand: false;
yourself).
presenter openWithSpec title: 'Example of Horizontal Layout'
将产生此输出: