Skip to content

Slider

Since 2.2.33

Slider 用于在 [min, max] 范围内选择 float。它是 Scroller 的数值选择对应物:Slider 的手柄长度固定,Scroller 的手柄表示视口大小。已注册两个具体组件:

  • slider-horizontal:水平 Slider,默认高 7 px。
  • slider-vertical:垂直 Slider,默认宽 7 px。

拖动手柄、左键点击轨道或使用鼠标滚轮都会改变值。Slider 继承 BindableUIElement<Float>,支持普通数据绑定。

真实 LDLib2 UI 中的水平与垂直 Slider
客户端实际渲染的水平与垂直 Slider。已填充轨道表示当前值,方块是可拖动手柄。

INFO

本页之外的布局、样式、事件和数据绑定规则见 UIElement


使用

java
var volume = new Slider.Horizontal()
        .setRange(0f, 100f)
        .setValue(40f)
        .setOnValueChanged(value -> saveVolume(value));
volume.sliderStyle(style -> style.sliderStep(0.05f));
parent.addChild(volume);

var vertical = new Slider.Vertical().setRange(-1f, 1f);

XML

xml
<slider-horizontal min-value="0" max-value="100" value="40"/>
<slider-vertical min-value="-1" max-value="1" value="0"/>
XML 属性类型说明
min-valuefloat最小值。默认:0
max-valuefloat最大值。默认:1
valuefloat初始值。默认:0

内部结构

字段CSS class说明
trackContainer.__slider_track_container__完整命中区域,接收轨道点击和滚轮事件。
track.__slider_track__细的背景轨道。
fill.__slider_fill__从最小值到当前值的填充轨道。
handle.__slider_handle__固定大小、可拖动的 Button

Slider 样式

INFO

slider-step

单次鼠标滚轮移动的总范围比例。默认:0.1

java
slider.sliderStyle(style -> style.sliderStep(0.05f));

INFO

slider-track-size

轨道像素厚度。默认:1

java
slider.sliderStyle(style -> style.trackSize(2));

INFO

slider-handle-size

手柄沿轨道方向的像素长度。默认:3

java
slider.sliderStyle(style -> style.handleSize(6));

数据绑定

java
slider.bind(DataBindingBuilder.floatVal(
        () -> state.getVolume(),
        value -> state.setVolume(value)
).build());

同步策略和生命周期规则见 Data Bindings


字段

名称类型可见性说明
trackContainerUIElementpublic final完整 Slider 命中区域。
trackUIElementpublic final背景轨道。
fillUIElementpublic final数值填充轨道。
handleButtonpublic final可拖动手柄。
sliderStyleSliderStyleprivate(getter)当前 Slider 样式。
minValue / maxValuefloatprotected(getter)当前范围端点。
isDraggingbooleanprotected(getter)拖动手柄时为 true

方法

方法返回值说明
setRange(float, float)Slider设置范围并限制当前值。
setMinValue(float) / setMaxValue(float)Slider修改一个范围端点。
setValue(Float)Slider设置限制后的值并通知监听器。
setValue(Float, boolean)Slider设置值;传入 false 可不通知。
setNormalizedValue(float)Slider设置归一化 0..1 位置。
getNormalizedValue()float获取归一化位置。
slideValue(float)void按归一化范围比例移动。
setOnValueChanged(FloatConsumer)Slider注册值变化监听器。
sliderStyle(Consumer<SliderStyle>)Slider流式配置样式。
trackContainer(...)track(...)fill(...)handle(...)Slider配置内部元素。

Released under the MIT License.