chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

3天內不再提示

HarmonyOS實戰(zhàn):Tab頂部滑動懸停功能實現(xiàn)

尤楓 ? 來源:jf_54996641 ? 2025-06-24 17:07 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

前言

日常開發(fā)過程中,遇到這種 Scroll 嵌套 List 列表滑動頂部懸停的場景十分常見,在鴻蒙開發(fā)時也正好實現(xiàn)了這個功能,本篇文章將帶你一步步實現(xiàn) Tab 頂部懸停的效果,建議點贊收藏!

實現(xiàn)效果

先看本文的最終實現(xiàn)效果如下:

需求分析

  • 當整體向上滑動時,優(yōu)先 Scroll 向上滑動。
  • 當整體向下滑動時,優(yōu)先 Scroll 向下滑動。

技術實現(xiàn)

  1. 首先需要實現(xiàn)基礎頁面布局,直接使用 Scroll 嵌套 List 布局。將 List 用 Tab 布局嵌套起來。
Scroll(this.scroller) {
          Column() {
            Text("內容")
              .textAlign(TextAlign.Center)
              .fontColor(Color.White)
              .backgroundColor(this.themColor.value)
              .width('100%')
              .height('40%')

            Tabs({ barPosition: BarPosition.Start }) {
              TabContent() {
                Column() {
                  Refresh({refreshing:false,friction:0,offset:0}){
                    List({ space: 10, scroller: this.scrollerForList }) {
                      ForEach(this.list, (item: string) = > {
                        ListItem() {
                          Text('ListItem' + item)
                            .width('100%')
                            .height('100%')
                            .borderRadius(15)
                            .fontSize(24)
                            .textAlign(TextAlign.Center)
                            .backgroundColor(Color.White)
                        }
                        .width('100%')
                        .height(100)
                      }, (item: string) = > item)
                    }
                   
                  .pullToRefresh(true)
                }

              }.tabBar('你好')

              TabContent() {
                Column().width('100%').height('100%').backgroundColor('#007DFF')
              }.tabBar('好的')

            }
            }

這里布局比較簡單,使用兩個 tab 用來切換布局。外層使用 Scroll 包裹,其中一個 tab 的里面使用 List 布局。相信這對大多人來說沒有什么難度。

  1. 搭建好基礎布局后,開始處理滑動沖突問題。根據(jù)實現(xiàn)效果來看,每次都是讓外層的 Scroll 優(yōu)先滑動,需要給 List 增加攔截處理,讓每次滑動優(yōu)先外層 Scroll 布局滑動,這里使用nestedScroll 屬性的NestedScrollMode.PARENT_FIRST,即優(yōu)先父布局滑動。
.nestedScroll({
                      scrollForward: NestedScrollMode.PARENT_FIRST,
                      scrollBackward: NestedScrollMode.PARENT_FIRST
                    })
  1. 這時不管怎么上下滑動,里面的 List 都不會滑動,只讓外層的 Scroll 組件滑動。接下來處理 List 的滑動事件。
  2. 首先定義一個枚舉類型,用來標記滑動位置。
enum ScrollPosition {
  top,
  center,
  bottom
}
  1. 接下來分別實現(xiàn) List 的 onReachStart,onReachEnd,onScrollFrameBegin 三個方法。這個比較容易理解,滑動道頂部時,記錄當前位置為頂部,滑動底部時,記錄當前位置為底部,onScrollFrameBegin 表示滑動過程中的回調,根據(jù)當前滑動位置和滑動偏移量來記錄是否繼續(xù)滑動。
.onReachStart(() = > {
                      this.listPosition = ScrollPosition.top
                    })
                    .onReachEnd(() = > {
                      this.listPosition = ScrollPosition.bottom
                    })
                    .onScrollFrameBegin((offset: number, state: ScrollState) = > {
                      if ((this.listPosition == ScrollPosition.top && offset <=0)||(this.listPosition == ScrollPosition.bottom && offset >=0)) {
                        return {offsetRemain :offset}
                      }
                      this.listPosition = ScrollPosition.center
                      return {offsetRemain:offset}
                    })
  1. 再看外層 Scroll 的滑動方法監(jiān)聽,同樣也是分別實現(xiàn)這三種方法,不過注意onScrollFrameBegin 里面返回值和 List 的不同,當 Scroll 滑動到底部活著頂部時,Scroll 不再滑動,注意看返回值為 0,否則 Scroll 才滑動。
.onReachStart(() = > {
          this.listPosition = ScrollPosition.top
        })
        .onReachEnd(() = > {
          this.listPosition = ScrollPosition.bottom
        })
        .onScrollFrameBegin((offset: number, _: ScrollState) = > {
          if ((this.listPosition == ScrollPosition.top && offset <= 0) || (
            this.listPosition == ScrollPosition.bottom && offset >= 0)
          ) {
            return { offsetRemain: 0 }
          }
          //不在底部
          this.listPosition = ScrollPosition.center
          return { offsetRemain: offset }
        })
  1. 根據(jù) List 組件和 Scroll 組件的滑動監(jiān)聽,用來判斷哪種狀態(tài)下 Scroll 優(yōu)先滑動,當 Scroll 滑動到底部活頂部時,通過返回值賦值為 0 ,阻止 Scroll 滑動,將滑動事件交個內部的 List 滑動。注意 List 通過設置nestedScroll 將滑動事件優(yōu)先讓外層 Scroll 處理。所以一開始是外層的 Scroll 先滑動。

總結

本文主要是根據(jù)實際需求實現(xiàn)的滑動效果,每次都優(yōu)先讓 Scroll 滑動,還有更多的滑動場景都可以用這種方式的思路解決,主要通過不同的判斷條件即可實現(xiàn)。例如向下滑動時優(yōu)先讓 List 滑動,然后再讓 Scroll 滑動。學會的小伙伴趕緊動手試試吧!

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

    關注

    60

    文章

    2737

    瀏覽量

    45015
  • HarmonyOS
    +關注

    關注

    80

    文章

    2141

    瀏覽量

    34924
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    滑動開關詳解:類型、規(guī)格和應用

    動作實現(xiàn)連接或斷開。這篇簡要的技術綜述將研究滑動開關的工作原理,探討其主要配置,并概述進行最優(yōu)選擇的電氣和機械注意事項。 滑動開關的基礎知識 [滑動開關]是一種機電元件,通過線性
    的頭像 發(fā)表于 10-01 15:14 ?1314次閱讀
    <b class='flag-5'>滑動</b>開關詳解:類型、規(guī)格和應用

    基于LabVIEW的鼠標滑動方向檢測教程

    本篇教程源于一位客戶的真實需求,需要LabVIEW能夠檢測到鼠標滑動的方向,然后通過判斷滑動方向處理后續(xù)的功能。
    的頭像 發(fā)表于 07-30 13:51 ?401次閱讀
    基于LabVIEW的鼠標<b class='flag-5'>滑動</b>方向檢測教程

    HarmonyOS 5】鴻蒙應用實現(xiàn)發(fā)票掃描、文檔掃描輸出PDF圖片或者表格的功能

    HarmonyOS 5】鴻蒙應用實現(xiàn)發(fā)票掃描、文檔掃描輸出PDF圖片或者表格的功能 ##鴻蒙開發(fā)能力 ##HarmonyOS SDK應用服務##鴻蒙金融類應用 (金融理財# 一、前言
    的頭像 發(fā)表于 07-11 18:16 ?649次閱讀
    【<b class='flag-5'>HarmonyOS</b> 5】鴻蒙應用<b class='flag-5'>實現(xiàn)</b>發(fā)票掃描、文檔掃描輸出PDF圖片或者表格的<b class='flag-5'>功能</b>

    HarmonyOS實戰(zhàn): 城市選擇功能的快速實現(xiàn)

    最近在日常開發(fā)過程中,需要實現(xiàn)城市選擇功能,同時支持模糊搜索。看似簡單的功能動手實現(xiàn)起來卻有很多難點。本篇文章詳細記錄開發(fā)過程中遇到的問題和對應的解決方法,希望能夠幫助你,建議點贊收藏
    的頭像 發(fā)表于 06-24 17:07 ?236次閱讀

    HarmonyOS實戰(zhàn):快速實現(xiàn)一個上下滾動的廣告控件

    上要想實現(xiàn)這樣的功能并不容易,那么在鴻蒙上怎么實現(xiàn)這樣的功能呢?本篇文章教你使用最簡單的方式實現(xiàn)一個支持上下滾動的廣告控件,建議點贊收藏!
    的頭像 發(fā)表于 06-24 17:05 ?268次閱讀

    HarmonyOS實戰(zhàn)實現(xiàn)任意拖動的應用懸浮窗口

    為了增加應用程序功能的豐富性和便利性,很多應用都會提供一個懸浮窗口實現(xiàn)多頁面顯示。特別是一些性能檢測工具,比如 dokit 。在鴻蒙上怎么實現(xiàn)類似的全局懸浮窗口呢?閱讀完本篇文章你將學會在鴻蒙上如何
    的頭像 發(fā)表于 06-24 17:04 ?951次閱讀

    HarmonyOS 5】桌面快捷方式功能實現(xiàn)詳解

    HarmonyOS 5】桌面快捷方式功能實現(xiàn)詳解 ##鴻蒙開發(fā)能力 ##HarmonyOS SDK應用服務##鴻蒙金融類應用 (金融理財# 一、前言 在移動應用開發(fā)中,如何讓用戶快速
    的頭像 發(fā)表于 06-21 16:42 ?1442次閱讀
    【<b class='flag-5'>HarmonyOS</b> 5】桌面快捷方式<b class='flag-5'>功能</b><b class='flag-5'>實現(xiàn)</b>詳解

    HarmonyOS實戰(zhàn):組件化項目搭建

    前言 鴻蒙應用開發(fā)已經成為互聯(lián)網新的風口,開發(fā)鴻蒙軟件已經成為今年工作的核心目標。在軟件開發(fā)過程中,對于復雜度較大,功能較多的軟件都會采用組件化項目架構,那么對于鴻蒙應用開發(fā)是否也能實現(xiàn)組件化呢
    的頭像 發(fā)表于 06-09 14:58 ?403次閱讀
    <b class='flag-5'>HarmonyOS</b><b class='flag-5'>實戰(zhàn)</b>:組件化項目搭建

    鴻蒙5開發(fā)寶藏案例分享---折疊屏懸停態(tài)開發(fā)實踐

    HarmonyOS早就準備好了超多實用案例,今天必須帶大家解鎖\"懸停態(tài)\"開發(fā)的正確姿勢,手慢無哦~ ?** 先來點干貨:什么是懸停態(tài)?** 就是把折疊屏像筆記本電腦那樣半折立在桌上
    發(fā)表于 06-03 12:04

    HarmonyOS5云服務技術分享--登錄郵件功能整理

    高度封裝的實現(xiàn)方案。希望本文能幫你快速落地功能,同時注重安全與體驗的平衡。如果有更多實戰(zhàn)問題,歡迎在評論區(qū)留言交流,一起玩轉HarmonyOS生態(tài)! ??Happy Coding! ?
    發(fā)表于 05-22 16:04

    迅為RK3568驅動指南GPIO子系統(tǒng)實戰(zhàn):實現(xiàn)動態(tài)切換引腳復用功能

    迅為RK3568驅動指南GPIO子系統(tǒng)實戰(zhàn):實現(xiàn)動態(tài)切換引腳復用功能
    的頭像 發(fā)表于 05-22 14:27 ?1407次閱讀
    迅為RK3568驅動指南GPIO子系統(tǒng)<b class='flag-5'>實戰(zhàn)</b>:<b class='flag-5'>實現(xiàn)</b>動態(tài)切換引腳復用<b class='flag-5'>功能</b>

    Pura X****闊折疊適配:解鎖超視覺與高效交互的全新體驗

    時列表能填滿頂部剩余空間。 以上方法可實現(xiàn)流暢的滑動沉浸式瀏覽體驗,同時保證頁面布局的適應性和美觀性。 目前,小紅書、蜻蜓FM等應用已依據(jù)HarmonyOS開發(fā)者官網設備場景專區(qū)的最佳
    發(fā)表于 04-14 15:30

    HarmonyOS NEXT 應用開發(fā)練習:智能視頻推薦

    一、整體思路 本DEMO展示了如何在HarmonyOS NEXT平臺上開發(fā)一個智能視頻推薦應用。應用通過模擬的用戶偏好數(shù)據(jù),為用戶推薦可能感興趣的視頻。用戶可以通過滑動屏幕查看推薦的視頻列表,并點擊
    發(fā)表于 01-02 16:26

    滑動變阻器的優(yōu)缺點對比

    滑動變阻器的優(yōu)點 1. 精確控制 滑動變阻器能夠提供精確的電阻值調整,這對于需要精細控制電流的實驗和應用至關重要。通過改變滑動觸點的位置,可以實現(xiàn)對電阻值的連續(xù)調整,從而精確控制電路中
    的頭像 發(fā)表于 11-25 15:13 ?2640次閱讀

    滑動變阻器的應用領域 滑動變阻器在電路中的作用

    觀察和理解電路中電流和電壓的變化。 2. 工業(yè)自動化 在工業(yè)自動化領域,滑動變阻器被用于控制電機的速度和力矩。通過調整電阻值,可以精確控制電機的電流,從而實現(xiàn)對電機運行狀態(tài)的精細調節(jié)。 3. 音頻設備 在音頻設備中,滑動變阻
    的頭像 發(fā)表于 11-25 15:01 ?4463次閱讀