Skip to content

Scroller

自 2.2.1

Scroller 是一个在 [min, max] 范围内保存数值的滚动条控件。注册了两个具体的变体:

  • scroller-vertical — 一个细长的垂直条(默认宽 5 像素)。
  • scroller-horizontal — 一个细长的水平条(默认高 5 像素)。

两者都包含一个 head 按钮(向上/向左滚动)、一个 tail 按钮(向下/向右滚动)、一个可拖拽的 scrollBar 滑块,以及一个 scrollContainer 轨道。点击轨道会跳转到点击位置。滚动鼠标滚轮也会改变数值。

Scroller 主要用作 ScrollerViewTextArea 内部的内部组件,但也可以独立使用。

INFO

UIElement 中记录的所有内容(布局、样式、事件、数据绑定等)同样适用于此处。


用法

java
// Vertical scroll bar
var scroller = new Scroller.Vertical();
scroller.setRange(0, 100f);
scroller.setValue(50f);
scroller.setOnValueChanged(value -> System.out.println("Scroll: " + value));
parent.addChild(scroller);

// Horizontal scroll bar
var hScroller = new Scroller.Horizontal();
hScroller.setRange(0, 1f);

XML

xml
<!-- 垂直滚动条,范围 0–100 -->
<scroller-vertical min-value="0" max-value="100" value="0"/>

<!-- 水平滚动条 -->
<scroller-horizontal min-value="0" max-value="1" value="0.5"/>
XML 属性类型描述
min-valuefloat最小值。默认值:0
max-valuefloat最大值。默认值:1
valuefloat初始值。默认值:0

内部结构

字段CSS 类描述
headButton.__scroller_head_button__向上/向左箭头按钮。
tailButton.__scroller_tail_button__向下/向右箭头按钮。
scrollContainer.__scroller_scroll_container__轨道背景。
scrollBar.__scroller_scroll_bar__可拖拽的滑块按钮。

Scroller 样式

INFO

scroll-delta

每次点击 head/tail 按钮或鼠标滚轮滚动时移动的总范围比例。

默认值:0.1(10%)

java
scroller.scrollerStyle(style -> style.scrollDelta(0.05f));

INFO

scroll-bar-size

拖拽滑块大小占轨道长度的百分比。100 表示滑块填满整个轨道。

默认值:20(%)

java
scroller.setScrollBarSize(30f);
// or:
scroller.scrollerStyle(style -> style.scrollBarSize(30f));

值绑定

Scroller 继承自 BindableUIElement&lt;Float&gt;,因此支持数据绑定:

java
scroller.bind(DataBindingBuilder.floatVal(
    () -> state.getScrollPosition(),
    v -> state.setScrollPosition(v)
).build());

字段

名称类型访问权限描述
headButtonButtonpublic final向上/向左箭头按钮。
tailButtonButtonpublic final向下/向右箭头按钮。
scrollContainerUIElementpublic final轨道元素。
scrollBarButtonpublic final可拖拽的滑块。
scrollerStyleScrollerStyleprivate (getter)当前样式。
minValuefloatprivate (getter)范围最小值。
maxValuefloatprivate (getter)范围最大值。
isDraggingbooleanprivate (getter)当滑块正在被拖拽时为 true

方法

方法返回值描述
setRange(float, float)Scroller设置 [min, max] 并限制当前值。
setMinValue(float)Scroller设置最小值。
setMaxValue(float)Scroller设置最大值。
setValue(Float)Scroller设置当前值(限制在范围内)。
setOnValueChanged(FloatConsumer)Scroller注册值变化监听器。
setScrollBarSize(float)Scroller设置滚动条滑块大小(0–100%)。
scrollerStyle(Consumer&lt;ScrollerStyle&gt;)Scroller以流式方式配置样式。
getNormalizedValue()float返回归一化到 [0, 1] 的当前值。
headButton(Consumer&lt;Button&gt;)Scroller配置头部箭头按钮。
tailButton(Consumer&lt;Button&gt;)Scroller配置尾部箭头按钮。
scrollContainer(Consumer&lt;UIElement&gt;)Scroller配置轨道元素。
scrollBar(Consumer&lt;Button&gt;)Scroller配置拖拽滑块按钮。

Released under the MIT License.