色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

鴻蒙ArkTS容器組件:Scroll

jf_46214456 ? 來源:jf_46214456 ? 作者:jf_46214456 ? 2024-07-12 15:24 ? 次閱讀

Scroll

可滾動的容器組件,當子組件的布局尺寸超過父組件的尺寸時,內容可以滾動。

說明:
開發前請熟悉鴻蒙開發指導文檔 :[gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md]

  • 該組件從API version 7開始支持。后續版本如有新增內容,則采用上角標單獨標記該內容的起始版本。
  • 該組件嵌套List子組件滾動時,若List不設置寬高,則默認全部加載,在對性能有要求的場景下建議指定List的寬高。
  • 該組件滾動的前提是主軸方向大小小于內容大小。
  • 該組件回彈的前提是要有滾動。內容小于一屏時,沒有回彈效果。

子組件

支持單個子組件。

接口

Scroll(scroller?: Scroller)

參數

參數名參數類型必填參數描述
scroller[Scroller]可滾動組件的控制器。用于與可滾動組件進行綁定。

屬性

除支持[通用屬性]外,還支持以下屬性:

名稱參數類型描述
scrollable[ScrollDirection]設置滾動方向。 默認值:ScrollDirection.Vertical
scrollBar[BarState]設置滾動條狀態。 默認值:BarState.Auto**說明:**如果容器組件無法滾動,則滾動條不顯示。如果容器組件的子組件大小為無窮大,則滾動條不支持拖動和伴隨滾動。
scrollBarColorstringnumber
scrollBarWidthstringnumber
edgeEffect[EdgeEffect]設置滑動效果,目前支持的滑動效果參見EdgeEffect的枚舉說明。 默認值:EdgeEffect.None
enableScrollInteraction10+boolean設置是否支持滾動手勢,當設置為false時,無法通過手指或者鼠標滾動,但不影響控制器的滾動接口。 默認值:true
friction10+number[Resource]

ScrollDirection枚舉說明

名稱描述
Horizontal僅支持水平方向滾動。
Vertical僅支持豎直方向滾動。
None不可滾動。

事件

名稱功能描述
onScrollFrameBegin9+(event: (offset: number, state: ScrollState) => { offsetRemain })每幀開始滾動時觸發,事件參數傳入即將發生的滾動量,事件處理函數中可根據應用場景計算實際需要的滾動量并作為事件處理函數的返回值返回,Scroll將按照返回值的實際滾動量進行滾動。 - offset:即將發生的滾動量。 - state:當前滾動狀態。 - offsetRemain:實際滾動量。 觸發該事件的條件 : 1、滾動組件觸發滾動時觸發,包括鍵鼠操作等其他觸發滾動的輸入設置。 2、調用控制器接口時不觸發。 3、越界回彈不觸發。**說明:**支持offsetRemain為負值。 若通過onScrollFrameBegine事件和scrollBy方法實現容器嵌套滾動,需設置子滾動節點的EdgeEffect為None。如Scroll嵌套List滾動時,List組件的edgeEffect屬性需設置為EdgeEffect.None。
onScroll(event: (xOffset: number, yOffset: number) => void)滾動事件回調, 返回滾動時水平、豎直方向偏移量。 觸發該事件的條件 : 1、滾動組件觸發滾動時觸發,支持鍵鼠操作等其他觸發滾動的輸入設置。 2、通過滾動控制器API接口調用。 3、越界回彈。
onScrollEdge(event: (side: Edge) => void)滾動到邊緣事件回調。 觸發該事件的條件 : 1、滾動組件滾動到邊緣時觸發,支持鍵鼠操作等其他觸發滾動的輸入設置。 2、通過滾動控制器API接口調用。 3、越界回彈。
onScrollStart9+(event: () => void)滾動開始時觸發。手指拖動Scroll或拖動Scroll的滾動條觸發的滾動開始時,會觸發該事件。使用[Scroller]滾動控制器觸發的帶動畫的滾動,動畫開始時會觸發該事件。 觸發該事件的條件 : 1、滾動組件開始滾動時觸發,支持鍵鼠操作等其他觸發滾動的輸入設置。 2、通過滾動控制器API接口調用后開始,帶過渡動效。
onScrollStop9+(event: () => void)滾動停止時觸發。手拖動Scroll或拖動Scroll的滾動條觸發的滾動,手離開屏幕并且滾動停止時會觸發該事件。使用[Scroller]滾動控制器觸發的帶動畫的滾動,動畫停止時會觸發該事件。 觸發該事件的條件 : 1、滾動組件觸發滾動后停止,支持鍵鼠操作等其他觸發滾動的輸入設置。 2、通過滾動控制器API接口調用后開始,帶過渡動效。

說明:

若通過onScrollFrameBegin事件和scrollBy方法實現容器嵌套滾動,需設置子滾動節點的EdgeEffect為None。如Scroll嵌套List滾動時,List組件的edgeEffect屬性需設置為EdgeEffect.None。

Scroller

可滾動容器組件的控制器,可以將此組件綁定至容器組件,然后通過它控制容器組件的滾動,同一個控制器不可以控制多個容器組件,目前支持綁定到List、Scroll、ScrollBar、Grid、WaterFlow上。

導入對象

scroller: Scroller = new Scroller()

scrollTo

scrollTo(value: { xOffset: number | string, yOffset: number | string, animation?: { duration?: number, curve?: Curve | ICurve } | boolean }): void

滑動到指定位置。

參數:

參數名參數類型必填參數描述
xOffsetnumberstring
yOffsetnumberstring
animation{ duration?: number, curve?: [Curve][ICurve]10+ }boolean10+

scrollEdge

scrollEdge(value: Edge): void

滾動到容器邊緣,不區分滾動軸方向,Edge.Top和Edge.Start表現相同,Edge.Bottom和Edge.End表現相同。

參數:

參數名參數類型必填參數描述
value[Edge]滾動到的邊緣位置。

scrollPage

scrollPage(value: { next: boolean }): void

滾動到下一頁或者上一頁。

參數:

參數名參數類型必填參數描述
nextboolean是否向下翻頁。true表示向下翻頁,false表示向上翻頁。

currentOffset

currentOffset(): { xOffset: number, yOffset: number }

返回當前的滾動偏移量。

返回值

類型描述
{ xOffset: number, yOffset: number }xOffset: 水平滑動偏移; yOffset: 豎直滑動偏移。**說明:**返回值單位為vp。

scrollToIndex

scrollToIndex(value: number, smooth?: boolean, align?: ScrollAlign): void

滑動到指定Index。

開啟smooth動效時,會對經過的所有item進行加載和布局計算,當大量加載item時會導致性能問題。

說明:

僅支持Grid、List、WaterFlow組件。

參數:

參數名參數類型必填參數描述
valuenumber要滑動到的目標元素在當前容器中的索引值。**說明:**value值設置成負值或者大于當前容器子組件的最大索引值,視為異常值,本次跳轉不生效。
smooth10+boolean設置滑動到列表項在列表中的索引值時是否有動效,true表示有動效,false表示沒有動效。 默認值:false。**說明:**當前僅List組件支持該參數。
align10+[ScrollAlign]指定滑動到的元素與當前容器的對齊方式。 List中的默認值為:ScrollAlign.START。Grid中默認值為:ScrollAlign.AUTO**說明:**當前僅List、Grid組件支持該參數。

scrollBy9+

scrollBy(dx: Length, dy: Length): void

滑動指定距離。

說明:

僅支持Scroll、ScrollBar、Grid、List組件。

參數:

參數名參數類型必填參數描述
dxLength水平方向滾動距離,不支持百分比形式。
dyLength豎直方向滾動距離,不支持百分比形式。

isAtEnd10+

isAtEnd(): boolean

查詢組件是否滾動到底部。

說明:

支持Scroll、List、Grid、WaterFlow組件。

返回值

類型描述
booleantrue表示組件已經滾動到底部,false表示組件還沒滾動到底部。

ScrollAlign枚舉說明10+

名稱描述HarmonyOSOpenHarmony鴻蒙文檔籽料:mau123789是v直接拿
START首部對齊。指定item首部與List首部對齊。
CENTER居中對齊。指定item主軸方向居中對齊于List。
END尾部對齊。指定item尾部與List尾部對齊。
AUTO自動對齊。 若指定item完全處于顯示區,不做調整。否則依照滑動距離最短的原則,將指定item首部對齊或尾部對齊于List,使指定item完全處于顯示區。

示例

示例1

// xxx.ets
import Curves from '@ohos.curves'

@Entry
@Component
struct ScrollExample {
  scroller: Scroller = new Scroller()
  private arr: number[] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

  build() {
    Stack({ alignContent: Alignment.TopStart }) {
      Scroll(this.scroller) {
        Column() {
          ForEach(this.arr, (item: number) = > {
            Text(item.toString())
              .width('90%')
              .height(150)
              .backgroundColor(0xFFFFFF)
              .borderRadius(15)
              .fontSize(16)
              .textAlign(TextAlign.Center)
              .margin({ top: 10 })
          }, (item: string) = > item)
        }.width('100%')
      }
      .scrollable(ScrollDirection.Vertical)  // 滾動方向縱向
      .scrollBar(BarState.On)  // 滾動條常駐顯示
      .scrollBarColor(Color.Gray)  // 滾動條顏色
      .scrollBarWidth(10) // 滾動條寬度
      .friction(0.6)
      .edgeEffect(EdgeEffect.None)
      .onScroll((xOffset: number, yOffset: number) = > {
        console.info(xOffset + ' ' + yOffset)
      })
      .onScrollEdge((side: Edge) = > {
        console.info('To the edge')
      })

      Button('scroll 150')
        .height('5%')
        .onClick(() = > { // 點擊后下滑指定距離150.0vp
          this.scroller.scrollBy(0,150)
        })
        .margin({ top: 10, left: 20 })
      Button('scroll 100')
        .height('5%')
        .onClick(() = > { // 點擊后滑動到指定位置,即下滑100.0vp的距離
          const yOffset: number = this.scroller.currentOffset().yOffset;
          this.scroller.scrollTo({ xOffset: 0, yOffset: yOffset + 100 })
        })
        .margin({ top: 60, left: 20 })
      Button('scroll 100')
        .height('5%')
        .onClick(() = > { // 點擊后滑動到指定位置,即下滑100.0vp的距離,滑動過程配置有動畫
          let curve = Curves.interpolatingSpring(100, 1, 228, 30) //創建一個階梯曲線
          const yOffset: number = this.scroller.currentOffset().yOffset;
          this.scroller.scrollTo({ xOffset: 0, yOffset: yOffset + 100, animation: { duration: 1000, curve: curve } })
        })
        .margin({ top: 110, left: 20 })
      Button('back top')
        .height('5%')
        .onClick(() = > { // 點擊后回到頂部
          this.scroller.scrollEdge(Edge.Top)
        })
        .margin({ top: 160, left: 20 })
      Button('next page')
        .height('5%')
        .onClick(() = > { // 點擊后滑到下一頁
          this.scroller.scrollPage({ next: true })
        })
        .margin({ top: 210, left: 20 })
    }.width('100%').height('100%').backgroundColor(0xDCDCDC)
  }
}

示例2

@Entry
@Component
struct NestedScroll {
  @State listPosition: number = 0; // 0代表滾動到List頂部,1代表中間值,2代表滾動到List底部。
  private arr: number[] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
  private scrollerForScroll: Scroller = new Scroller()
  private scrollerForList: Scroller = new Scroller()

  build() {
    Flex() {
      Scroll(this.scrollerForScroll) {
        Column() {
          Text("Scroll Area")
            .width("100%")
            .height("40%")
            .backgroundColor(0X330000FF)
            .fontSize(16)
            .textAlign(TextAlign.Center)
            .onClick(() = > {
              this.scrollerForList.scrollToIndex(5)
            })

          List({ space: 20, scroller: this.scrollerForList }) {
            ForEach(this.arr, (item: number) = > {
              ListItem() {
                Text("ListItem" + item)
                  .width("100%")
                  .height("100%")
                  .borderRadius(15)
                  .fontSize(16)
                  .textAlign(TextAlign.Center)
                  .backgroundColor(Color.White)
              }.width("100%").height(100)
            }, (item: string) = > item)
          }
          .width("100%")
          .height("50%")
          .edgeEffect(EdgeEffect.None)
          .friction(0.6)
          .onReachStart(() = > {
            this.listPosition = 0
          })
          .onReachEnd(() = > {
            this.listPosition = 2
          })
          .onScrollFrameBegin((offset: number) = > {
            if ((this.listPosition == 0 && offset <= 0) || (this.listPosition == 2 && offset >= 0)) {
              this.scrollerForScroll.scrollBy(0, offset)
              return { offsetRemain: 0 }
            }
            this.listPosition = 1
            return { offsetRemain: offset };
          })

          Text("Scroll Area")
            .width("100%")
            .height("40%")
            .backgroundColor(0X330000FF)
            .fontSize(16)
            .textAlign(TextAlign.Center)
        }
      }
      .width("100%").height("100%")
    }.width('100%').height('100%').backgroundColor(0xDCDCDC).padding(20)
  }
}

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 組件
    +關注

    關注

    1

    文章

    512

    瀏覽量

    17836
  • 鴻蒙
    +關注

    關注

    57

    文章

    2358

    瀏覽量

    42871
收藏 人收藏

    評論

    相關推薦

    鴻蒙ArkTS聲明式組件:ScrollBar

    滾動條組件ScrollBar,用于配合可滾動組件使用,如List、Grid、Scroll。
    的頭像 發表于 07-01 15:52 ?533次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>ArkTS</b>聲明式<b class='flag-5'>組件</b>:ScrollBar

    鴻蒙ArkTS容器組件:Column

    沿垂直方向布局的容器。
    的頭像 發表于 07-05 16:32 ?456次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>ArkTS</b><b class='flag-5'>容器</b><b class='flag-5'>組件</b>:Column

    鴻蒙ArkTS容器組件:Flex

    以彈性方式布局子組件容器組件
    的頭像 發表于 07-08 10:19 ?510次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>ArkTS</b><b class='flag-5'>容器</b><b class='flag-5'>組件</b>:Flex

    鴻蒙ArkTS容器組件:FlowItem

    [瀑布流組件]的子組件,用來展示瀑布流具體item。
    的頭像 發表于 07-08 09:56 ?389次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>ArkTS</b><b class='flag-5'>容器</b><b class='flag-5'>組件</b>:FlowItem

    鴻蒙ArkTS容器組件:GridCol

    柵格子組件,必須作為柵格容器組件([GridRow])的子組件使用。
    的頭像 發表于 07-08 15:17 ?416次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>ArkTS</b><b class='flag-5'>容器</b><b class='flag-5'>組件</b>:GridCol

    鴻蒙ArkTS容器組件:GridItem

    網格容器中單項內容容器。
    的頭像 發表于 07-09 09:25 ?419次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>ArkTS</b><b class='flag-5'>容器</b><b class='flag-5'>組件</b>:GridItem

    鴻蒙ArkTS容器組件:ListItemGroup

    組件用來展示列表item分組,寬度默認充滿[List]組件,必須配合List組件來使用。
    的頭像 發表于 07-10 09:20 ?689次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>ArkTS</b><b class='flag-5'>容器</b><b class='flag-5'>組件</b>:ListItemGroup

    鴻蒙ArkTS容器組件:Navigator

    路由容器組件,提供路由跳轉能力。
    的頭像 發表于 07-10 14:55 ?424次閱讀

    鴻蒙ArkTS容器組件:Refresh

    可以進行頁面下拉操作并顯示刷新動效的容器組件。
    的頭像 發表于 07-11 16:11 ?518次閱讀

    鴻蒙ArkTS容器組件:RowSplit

    將子組件橫向布局,并在每個子組件之間插入一根縱向的分割線。
    的頭像 發表于 07-11 22:25 ?345次閱讀

    鴻蒙ArkTS容器組件:SideBarContainer

    提供側邊欄可以顯示和隱藏的側邊欄容器,通過子組件定義側邊欄和內容區,第一個子組件表示側邊欄,第二個子組件表示內容區。
    的頭像 發表于 07-18 15:46 ?561次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>ArkTS</b><b class='flag-5'>容器</b><b class='flag-5'>組件</b>:SideBarContainer

    鴻蒙ArkTS容器組件:Stack

    堆疊容器,子組件按照順序依次入棧,后一個子組件覆蓋前一個子組件
    的頭像 發表于 07-15 18:23 ?880次閱讀

    鴻蒙ArkTS容器組件:Swiper

    滑塊視圖容器,提供子組件滑動輪播顯示的能力。
    的頭像 發表于 07-15 09:51 ?649次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>ArkTS</b><b class='flag-5'>容器</b><b class='flag-5'>組件</b>:Swiper

    鴻蒙ArkTS容器組件:Tabs

    通過頁簽進行內容視圖切換的容器組件,每個頁簽對應一個內容視圖。
    的頭像 發表于 07-15 09:48 ?831次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>ArkTS</b><b class='flag-5'>容器</b><b class='flag-5'>組件</b>:Tabs

    鴻蒙ArkTS容器組件:WaterFlow

    瀑布流容器,由“行”和“列”分割的單元格所組成,通過容器自身的排列規則,將不同大小的“項目”自上而下,如瀑布般緊密布局。
    的頭像 發表于 07-15 17:35 ?435次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>ArkTS</b><b class='flag-5'>容器</b><b class='flag-5'>組件</b>:WaterFlow
    主站蜘蛛池模板: AV无码九九久久| 最近免费中文字幕大全免费| 亚洲精品久久久久一区二区三| xxxx69日本| 美女被爽cao免费漫画| 野花韩国中文版免费观看| 国产性色AV内射白浆肛交后入| 少女10声大哥喊退色狼| 成人特级毛片| 日日摸天天添天天添无码蜜臀| AV午夜午夜快憣免费观看| 免费看毛片的网址| 99视频在线观看视频| 芒果视频看片在线观看| 51久久成人国产精品麻豆| 毛片基地看看成人免费| 91九色视频无限观看免费| 六度影院最新| 99视频在线精品免费观看18| 欧美日韩1区| 成年人国产视频| 色久久综合视频本道88| 国产看午夜精品理论片| 亚洲免费久久| 久久亚洲黄色| av亚洲2017色天堂| 骚妇BB双飞插| 国产三级91| 御姐被吸奶| 欧美日韩亚洲中字二区| 处xxxx.88| 亚洲AV无码一区二区三区牛牛| 国内精品视频久久久久免费| 一个人的视频在线观看免费观看| 久久久久国产一级毛片高清片| 337p欧洲亚大胆精品| 千禧金瓶梅 快播| 国产品无码一区二区三区在线| 亚洲精品无码久久久久A片空| 考试考90就可以晚上和老师C| oldgrand欧洲老妇人|