ScrollView

ScrollView是一种带滚动功能的组件,它采用滑动的方式在有限的区域内显示更多的内容。

支持的XML属性

ScrollView的共有XML属性继承自:StackLayout

ScrollView的自有XML属性见下表:

属性名称 中文描述 取值 取值说明 使用案例
match_viewport 是否拉伸匹配 boolean类型 可以直接设置true/false,也可以引用boolean资源。 ohos:match_viewport="true"ohos:match_viewport="$boolean:true"
rebound_effect 回弹效果 boolean类型 可以直接设置true/false,也可以引用boolean资源。 ohos:rebound_effect="true"ohos:rebound_effect="$boolean:true"

创建ScrollView

在layout目录下的xml文件中创建ScrollView,ScrollView的展示需要布局支持,此处以DirectionalLayout为例。

<ScrollView    ohos:id="$+id:scrollview"    ohos:height="300vp"    ohos:width="300vp"    ohos:background_element="#FFDEAD"    ohos:top_margin="32vp"    ohos:bottom_padding="16vp"    ohos:layout_alignment="horizontal_center">    <DirectionalLayout        ohos:height="match_content"        ohos:width="match_content">        <Image            ohos:width="300vp"            ohos:height="match_content"            ohos:top_margin="16vp"            ohos:image_src="$media:plant"/>        <!-- 放置任意需要展示的组件 -->        ...    </DirectionalLayout></ScrollView>

图1 ScrollView效果 img

设置ScrollView

ScrollView的速度、滚动、回弹等常用接口如下:

方法 作用
doFling(int velocityX, int velocityY)doFlingX(int velocityX)doFlingY(int velocityY) 设置X轴和Y轴滚动的初始速度,单位(px)
fluentScrollBy(int dx, int dy)fluentScrollByX(int dx)fluentScrollByY(int dy) 根据像素数平滑滚动到指定位置,单位(px)
fluentScrollTo(int x, int y)fluentScrollXTo(int x)fluentScrollYTo(int y) 根据指定坐标平滑滚动到指定位置,单位(px)
setReboundEffect(boolean enabled) 设置是否启用回弹效果,默认false
setReboundEffectParams(int overscrollPercent, float overscrollRate, int remainVisiblePercent)setReboundEffectParams(ReboundEffectParams reboundEffectParams)setOverscrollPercent(int overscrollPercent)setOverscrollRate(float overscrollRate)setRemainVisiblePercent(int remainVisiblePercent) 配置回弹效果overscrollPercent:过度滚动百分比,默认值40overscrollRate:过度滚动率,默认值0.6remainVisiblePercent:应保持可见内容的最小百分比,默认值20
  • 根据像素数平滑滚动。

    btnScroll.setClickedListener(component -> {    scrollView.fluentScrollByY(300);});
    

    图2 根据像素数平滑滚动效果 img

  • 平滑滚动到指定位置。

    scrollView.fluentScrollYTo(500);
    

    图3 平滑滚动到指定位置效果 img

  • 设置布局方向:ScrollView自身没有设置布局方向的属性,所以需要在其子布局中设置。以横向布局horizontal为例:

    <ScrollView    ...    >    <DirectionalLayout        ...        ohos:orientation="horizontal">        ...    </DirectionalLayout></Scrollview>
    

    图4 设置布局方向为横向布局效果 img

  • 设置回弹效果。

    在xml中设置:

    <ScrollView    ...    ohos:rebound_effect="true">        ...</ScrollView>
    

    在Java代码中设置:

    scrollView.setReboundEffect(true);
    

    图5 开启回弹效果 img

  • 设置缩放匹配效果。

    在xml中设置:

    <ScrollView    ...    ohos:match_viewport="true">        ...</ScrollView>
    

    在Java代码中设置:

    scrollView.setMatchViewportEnabled(true);
    

    图6 设置缩放匹配效果 img

results matching ""

    No results matching ""