【每日學點HarmonyOS Next知識】web滾動、事件回調、selectable屬性、監聽H5內部router、Grid嵌套時高度設置

【每日學點HarmonyOS Next知識】web滾動、事件回調、selectable屬性、監聽H5內部router、Grid嵌套時高度設置

1、HarmonyOS WebView加載url無法滾動?

scroll 里面嵌套webView,demo參考:

// xxx.ets
import web_webview from '@ohos.web.webview'@Entry
@Component
struct WebComponent {controller: web_webview.WebviewController = new web_webview.WebviewController()@State mode: WebLayoutMode = WebLayoutMode.FIT_CONTENTbuild() {Column() {Text("這里是頭部區域").width("100%").height('30%').backgroundColor("#f89f0f").fontSize(28).fontColor("#FF0F0F")Web({ src: $rawfile('Index.html'), controller: this.controller }).width('100%').height(200)// .layoutMode(this.mode).zoomAccess(false).domStorageAccess(true).overviewModeAccess(true).imageAccess(true).onlineImageAccess(true).fileAccess(true).databaseAccess(true)Text("這里是底部區域").fontSize(28).fontColor("#FF0F0F").width("100%").height('40%').backgroundColor("#f89f0f")}.width('100%').height('100%')}
}
2、HarmonyOS 事件回調?

有兩個頁面,A、B,在A中通過router.pushUrl方法跳轉至B頁面。B頁面有一個按鈕btn,點擊btn時,如何將btn的觸發事件告知A頁面。B頁面從始至終不進行back(返回)。

使用自定義訂閱事件的方式來實現該功能:參考demo:

//index.ets
import display from '@ohos.display';
import emitter from '@ohos.events.emitter';
import { router } from '@kit.ArkUI';
import { JSON } from '@kit.ArkTS';@Entry
@Component
struct DisplayTest {build() {Column({space:20}){Button('Test').type(ButtonType.Capsule).onClick(() => {let innerEvent: emitter.InnerEvent = {eventId: 12222};//觸發id為12222的事件emitter.on(innerEvent, (data) => {console.info('once callback' + JSON.stringify(data));});router.pushUrl({url:'pages/PageOne'})}).width('50%')}.width("100%").height('100%').justifyContent(FlexAlign.Center)}
}//PageOne.ets
import emitter from '@ohos.events.emitter';@Entry
@Component
struct PageOne {build() {Column(){Text('PageOne').width('50%')Button('send').type(ButtonType.Capsule).width('50%').onClick(() => {let eventData: emitter.EventData = {data: {"content": "c","id": 1,}};let innerEvent: emitter.InnerEvent = {eventId: 12222,priority: emitter.EventPriority.HIGH};//發布id為12222的事件emitter.emit(innerEvent, eventData);})}.justifyContent(FlexAlign.Center).width('100%').height('100%')}
}
3、HarmonyOS ListItem里面的屬性selectable是干嘛用的?

ListItem的selectable屬性為當前ListItem元素是否可以被鼠標框選,并不能使用此屬性實現多選功能開發者可以根據動態屬性設置attributeModifier來維護管理多選狀態,參考文檔:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-universal-attributes-attribute-modifier-V5

動態設置組件的屬性,支持開發者在屬性設置時使用if/else語法,且根據需要使用多態樣式設置屬性。

4、HarmonyOS web組件如何監聽h5內部的router跳轉?

需要攔截web組件內部的h5路由跳轉進行參數的處理,請問有方法攔截嗎

1、用于攔截url并返回響應數據:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-basic-components-web-V5
2、用于判斷是否阻止此次訪問:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-basic-components-web-V5#onloadintercept10

5、HarmonyOS Scroll中嵌套Grid組件的時候,Grid必須要設置height高度嗎?

Scroll中嵌套Grid組件的時候,Grid必須要設置height高度嗎

Grid的寬高沒有設置時,默認適應父組件尺寸。 將 代碼中Grid的父組件(Column)的寬高設置下比如: .width(“100%”) .height(“100%”)我這邊是可以正常顯示出來的。

參考demo:

@Entry
@Component
export struct AllChannelsPage{@State tabs: Array<String> = new Array();@State dragChannel: string = 'drag';private deviceWidth: number = (AppStorage.get('deviceWidth') as number)@State itemWidth: number = 80;@State itemHeight: number = 80;@State mineRowCount: number = 1;@State mineGridHeight: number = 100;@State mainTitieDes: string = '點擊進入頻道';aboutToAppear(): void {for(let i = 0; i < 30; i++ ){this.tabs.push('頻道' + i);}this.itemWidth = (this.deviceWidth - 32 - 30)/4;this.itemHeight = this.itemWidth / 2.1;this.mineRowCount = Math.ceil(this.tabs.length / 4);this.mineGridHeight = this.mineRowCount * this.itemHeight + (this.mineRowCount - 1) * 10}@Builder pixelMapBuilder() { //拖拽過程樣式Column() {Text(this.dragChannel).fontSize('15fp')// .fontColor($r('app.color.color202022')).textAlign(TextAlign.Center).width(this.itemWidth).height(this.itemHeight)// .backgroundColor($r('app.color.colorF9F9F9')).borderRadius(4)}}changeIndex(index1: number, index2: number) { //交換數組位置let temp = this.tabs[index1];this.tabs[index1] = this.tabs[index2];this.tabs[index2] = temp;}build() {NavDestination(){Column(){Scroll(){Column(){Row(){Text().width(4).height(16)// .backgroundColor($r('app.color.colorF21333')).borderRadius(2)Blank().width(6)Text('我的頻道').fontSize('16fp')// .fontColor($r('app.color.color202022'))Blank().width(8)Text(this.mainTitieDes).fontSize('12fp')// .fontColor($r('app.color.colorB1B1BB'))Blank().layoutWeight(1)Text('重置').fontSize('15fp')// .fontColor($r('app.color.color909099'))Text().width(1).height(10)// .backgroundColor($r('app.color.color909099')).margin({left: 4, right: 4})Text('編輯').fontSize('15fp')// .fontColor($r('app.color.colorF21333'))}.width('100%').margin({top: 5, bottom: 15}).padding({ left: 16, right: 16 })Grid() {ForEach(this.tabs, (channel: string) => {GridItem() {Text(channel).fontSize((channel?? '').length > 5 ? '11fp': '15fp')// .fontColor($r('app.color.color202022')).textAlign(TextAlign.Center)// .width(this.itemWidth)// .height(this.itemHeight).width('100%').height(80)// .backgroundColor($r('app.color.colorF9F9F9')).borderRadius(4)// .onTouch((event: TouchEvent) => {//   if (event.type === TouchType.Up) {//     this.dragChannel = channel.channelName ?? '';//   }// })}})}.columnsTemplate('1fr 1fr 1fr 1fr').columnsGap(10).rowsGap(10).onScrollIndex((first: number) => {console.info(first.toString());})// .width('100%')// .height('80%').padding({ left: 16, right: 16 }).supportAnimation(true).editMode(true) //設置Grid是否進入編輯模式,進入編輯模式可以拖拽Grid組件內部GridItem.onItemDragStart((event: ItemDragInfo, itemIndex: number) => { //第一次拖拽此事件綁定的組件時,觸發回調。return this.pixelMapBuilder(); //設置拖拽過程中顯示的圖片。}).onItemDrop((event: ItemDragInfo, itemIndex: number, insertIndex: number, isSuccess: boolean) => { //綁定此事件的組件可作為拖拽釋放目標,當在本組件范圍內停止拖拽行為時,觸發回調。console.info('tag' + itemIndex + '', insertIndex + '') //itemIndex拖拽起始位置,insertIndex拖拽插入位置this.changeIndex(itemIndex, insertIndex)}).nestedScroll({scrollForward: NestedScrollMode.PARENT_FIRST,scrollBackward: NestedScrollMode.SELF_FIRST})Text().width('100%').height(500)}.width("100%").height("100%")}.width('100%').layoutWeight(1)}}.hideTitleBar(true)}}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/897091.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/897091.shtml
英文地址,請注明出處:http://en.pswp.cn/news/897091.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Flink性能指標詳解MetricsAnalysis

文章目錄 Flink 組成1.JobManager2.TaskManager3.ResourceManager4.Dispatcher5.Client6. Env JobManager MetricsTaskManager Metrics Flink 組成 1.JobManager 管理任務 作業調度&#xff1a;負責接收和調度作業&#xff0c;分配任務到 TaskManager。資源管理&#xff1a;…

Flutter底層實現

1. Dart 語言 Dart 是 Flutter 的主要編程語言。Dart 設計之初就是為了與 JavaScript 兼容&#xff0c;并且可以編譯為機器代碼運行。Dart 提供了一些特性&#xff0c;如異步支持&#xff08;通過 async 和 await&#xff09;&#xff0c;這使得編寫高效的網絡請求和復雜動畫變…

< 自用文兒 > CertBot 申請 SSL 證書 使用 challenge 模式 避開防火墻的阻擋

環境&#xff1a; 騰訊 VPS 騰訊會向你銷售 SSL &#xff0c; 這個本是免費的。CertBot 默認申請證書要用到 80 端口&#xff0c;會蹭邊什么什么條款&#xff0c;備案法律來阻止80端口的通訊&#xff0c;沒有網站也一樣被阻攔。 通過騰訊買的域名&#xff1a; bestherbs.cn …

【AI】【Unity】關于Unity接入DeepseekAPI遇到的坑

前言 由于deepseek網頁端在白天日常抽風&#xff0c;無法正常的使用&#xff0c;所以調用API就成了目前最好的選擇&#xff0c;尤其是Deepseek的API價格低得可怕&#xff0c;這不是和白送的一樣嗎&#xff01;然后使用過很多本地部署接入API的方式&#xff0c;例如Chatbox、Pa…

【微知】Mellanox驅動中to是什么?有哪些超時時間?(time out,心跳2s,reset 1分鐘)

to是tout縮寫&#xff0c;tout是time out 單位是毫秒。 static const u32 tout_def_sw_val[MAX_TIMEOUT_TYPES] {[MLX5_TO_FW_PRE_INIT_TIMEOUT_MS] 120000, # 2min。預初始化的總超時時間[MLX5_TO_FW_PRE_INIT_ON_RECOVERY_TIMEOUT_MS] 7200000, #設備恢復過程中的固件預初…

linux | Vim 命令快捷操作

注&#xff1a;本文為過去的 “vim 使用筆記”。 跳轉命令 跳轉命令 #&#xff1a;向前查找光標當前所在單詞&#xff0c;并跳轉到該單詞的上一個出現位置。*&#xff1a;向后查找光標當前所在單詞&#xff0c;并跳轉到該單詞的下一個出現位置。 行內跳轉 0&#xff1a;跳轉…

樹莓派3B+的初步使用

樹莓派3B的初步使用 一、安裝使用樹莓派系統1.將系統寫入SD卡2.登錄樹莓派系統3.用C和Python編譯運行hello world 一、安裝使用樹莓派系統 1.將系統寫入SD卡 首先&#xff0c;準備至少16GB大小的SD卡以便裝入樹莓派系統&#xff0c;將SD卡插入讀卡器后連接電腦準備給SD卡寫入…

基于Windows11的DockerDesktop安裝和布署方法簡介

基于Windows11的DockerDesktop安裝和布署方法簡介 一、下載安裝Docker docker 下載地址 https://www.docker.com/ Download Docker Desktop 選擇Download for Winodws AMD64下載Docker Desktop Installer.exe 雙點擊 Docker Desktop Installer.exe 進行安裝 測試Docker安裝是…

文檔處理控件Aspose.Total教程:使用 C# 將 Obsidian Markdown 轉換為 OneNote

Obsidian 是一款廣泛使用的基于 Markdown 的筆記應用程序。它提供了一種強大而有效的方式來構建和組織想法。用戶可以無縫地連接他們的想法&#xff0c;提高清晰度和工作效率。另一方面&#xff0c;OneNote 是 Microsoft 的一款功能強大的筆記應用程序。它還可以幫助用戶組織他…

第5章:vuex

第5章&#xff1a;vuex 1 求和案例 純vue版2 vuex工作原理圖3 vuex案例3.1 搭建vuex環境錯誤寫法正確寫法 3.2 求和案例vuex版細節分析源代碼 4 getters配置項4.1 細節4.2 源代碼 5 mapState與mapGetters5.1 總結5.2 細節分析5.3 源代碼 6 mapActions與mapMutations6.1 總結6.2…

迷你世界腳本對象庫接口:ObjectLib

對象庫接口&#xff1a;ObjectLib 迷你世界 更新時間: 2023-04-26 20:21:09 具體函數名及描述如下: 序號 函數名 函數描述 1 getAreaData(...) 獲取區域數據 2 getPositionData(...) 獲取位置數據 3 getLivingData(...) 獲取生物數據 4 getItemDat…

測試是如何跟進和管理 bug

測試在跟進和管理 Bug定位精確、問題反饋及時、修復閉環高效 三大關鍵環節中起到了至關重要的作用。Bug定位精確 是整個流程的基礎&#xff0c;通過詳細記錄和復現問題&#xff0c;可以幫助開發團隊迅速找出缺陷根源&#xff1b;而及時有效的反饋機制則確保問題不會被遺漏&…

運動控制卡--固高實用

目錄 組件 配置參數 編程控制 組件 我手頭有固高卡&#xff0c;記錄使用。 用運動控制卡 伺服&#xff08;步進&#xff09;電機搭建一個運動控制系統&#xff0c;主要包括&#xff1a;1、控制器 2、端子板 1、控制器 2、端子板 3、伺服&#xff08;步進&#xff09;…

2025年能源工作指導意見

2025年是“十四五”規劃收官之年&#xff0c;做好全年能源工作意義重大。為深入貫徹落實黨中央、國務院決策部署&#xff0c;以能源高質量發展和高水平安全助力我國經濟持續回升向好&#xff0c;滿足人民群眾日益增長的美好生活用能需求&#xff0c;制定本意見。 一、總體要求…

鍵值對(C++實現)

目錄 鍵值對的定義 鍵值對的底層實現 鍵值對的作用 鍵值對的使用 對鍵值對中的值的搜索 一、鍵值對的定義 鍵值對&#xff08;Key-Value Pair&#xff09;是一種數據結構&#xff0c;用于存儲和表示兩個相關聯的值。在鍵值對中&#xff0c;一個值被關聯到一個唯一的鍵上&…

使用 Docker 部署 RabbitMQ 并實現數據持久化

非常好&#xff01;以下是一份完整的 Docker 部署 RabbitMQ 的博客文檔&#xff0c;包含從安裝到問題排查的詳細步驟。你可以直接將其發布到博客中。 使用 Docker 部署 RabbitMQ 并實現數據持久化 RabbitMQ 是一個開源的消息隊列系統&#xff0c;廣泛應用于分布式系統中。使用…

springboot429-基于springboot的教務管理系統(源碼+數據庫+純前后端分離+部署講解等)

&#x1f495;&#x1f495;作者&#xff1a; 愛笑學姐 &#x1f495;&#x1f495;個人簡介&#xff1a;十年Java&#xff0c;Python美女程序員一枚&#xff0c;精通計算機專業前后端各類框架。 &#x1f495;&#x1f495;各類成品Java畢設 。javaweb&#xff0c;ssm&#xf…

my學習網址

文章目錄 1.軟件版本管控GIT學習網站大全1官方文檔類2在線教程類3互動學習類4問答社區類 Linux學習網址1、 Linux命令行與shell腳本編程大全 1.軟件版本管控 GIT學習網站大全 廖雪峰網站 以下為你推薦不同類型的學習Git的網站&#xff1a; 1官方文檔類 Git官方文檔 網址&am…

Best practice-生產環境中加鎖的最佳實踐

什么是死鎖&#xff1f; 場景&#xff1a;圖書館有兩個相鄰的儲物柜&#xff08;柜子A和柜子B&#xff09;&#xff0c;小明和小紅需要同時使用這兩個柜子才能完成借書流程。 互斥資源 每個柜子只有一把鑰匙&#xff0c;且一次只能被一人使用&#xff08;資源不可共享&#x…

極狐GitLab 17.9 正式發布,40+ DevSecOps 重點功能解讀【四】

GitLab 是一個全球知名的一體化 DevOps 平臺&#xff0c;很多人都通過私有化部署 GitLab 來進行源代碼托管。極狐GitLab 是 GitLab 在中國的發行版&#xff0c;專門為中國程序員服務。可以一鍵式部署極狐GitLab。 學習極狐GitLab 的相關資料&#xff1a; 極狐GitLab 官網極狐…