4.1「HarmonyOS鴻蒙開發」元件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為例。

<?xml version=“1。0” encoding=“utf-8”?>brbrbr    br        br            br            <!—— 放置任意需要展示的元件 ——>br           。。。br        br    brbr

預覽一下效果:

4.1「HarmonyOS鴻蒙開發」元件ScrollView

三、設定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

1、滾動指定的距離,預設單位是px。

//1。獲取scrollview物件br        ScrollView scrollView = (ScrollView) findComponentById(ResourceTable。Id_scrollview);br        //2。點選br        scrollView。setClickedListener(component -> {br            //點選一下,沿y軸將內容平滑地滾動了指定數量的畫素。br            scrollView。fluentScrollByY(500);br       });

預覽效果:

4.1「HarmonyOS鴻蒙開發」元件ScrollView

每點選一下,y軸上就滾動500px。

2、滾動到指定的座標位置。預設單位是px

// 點選一下,沿y軸將內容平滑地滾動了指定數量的畫素。br            // scrollView。fluentScrollByY(500);br            // 點選一下,沿y軸將內容平滑地滾動到指定的座標位置。br            scrollView。fluentScrollYTo(500);brbr            // 注意以上兩個方法的區別:fluentScrollByY(500)是滾動了500px,每次滾動的距離是500px,再點選還是會滾動500px,br            // 而fluentScrollYTo(500),是固定的就滾動到500px這個位置。

預覽效果:點選一下滾動到y軸500px的位置。再點選也是一樣的,除非滑動。

4.1「HarmonyOS鴻蒙開發」元件ScrollView

注意以上兩個方法的區別:

fluentScrollByY(500)是滾動了500px,每次滾動的距離是500px,再點選還是會滾動500px, 而fluentScrollYTo(500),是固定的就滾動到500px這個位置。

3、設定佈局方向:ScrollView自身沒有設定佈局方向的屬性,所以需要在其子佈局中設定。以橫向佈局horizontal為例:

br    br       。。。br    br

我們在layout目錄下,重新建立一個layout佈局檔案:demo1_scrollview。xml。

<?xml version=“1。0” encoding=“utf-8”?>brbrbr    br        br            br            br            br        br    brbr

預覽效果:

4.1「HarmonyOS鴻蒙開發」元件ScrollView

4、設定回彈效果。

在xml佈局中設定:

br       。。。br

在Java程式碼中設定:

scrollView。setReboundEffect(true);

預覽效果:

4.1「HarmonyOS鴻蒙開發」元件ScrollView

5、設定縮放匹配效果。

指定滾動元件是否允許拉伸其元件以填充其視口。

在xml中設定:

br       。。。br

在Java程式碼中設定:

brscrollView。setMatchViewportEnabled(true);