HarmonyOS鸿蒙Next中有可以Hook某个组件的属性的方法? 由于图片的draggable默认是开启的,想统一进行关闭
HarmonyOS鸿蒙Next中有可以Hook某个组件的属性的方法? 由于图片的draggable默认是开启的,想统一进行关闭 由于
| draggable9+ | boolean | 组件默认拖拽效果,设置为true时,组件可拖拽。 API version 9及之前,默认值为false。API version 10及之后,默认值为true。 |
想一键设置禁止图片的可拖拽位, 不然需要把项目中的图片全部都要设置一边, 有点费劲, 谁知道有啥好的方法吗?
更多关于HarmonyOS鸿蒙Next中有可以Hook某个组件的属性的方法? 由于图片的draggable默认是开启的,想统一进行关闭的实战教程也可以访问 https://www.itying.com/category-93-b0.html
没办法,类似的问题很多,比如引入的字体,也是每个Text都要设置一遍。
换个思路,可以自定义一个MyImage,然后其它页面都使用MyImage()代替系统的Image,将来想追加什么属性、或者断拦截处理也方便。
更多关于HarmonyOS鸿蒙Next中有可以Hook某个组件的属性的方法? 由于图片的draggable默认是开启的,想统一进行关闭的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS NEXT中,无法直接Hook组件的默认属性。可自定义Image子组件,内部设置.draggable(false),然后全局替换原Image组件使用。或者使用@Builder封装公共图片组件,统一关闭拖拽。无其他原生Hook机制。
ArkUI 并没有提供可直接全局 Hook 组件属性的机制,无法一键修改所有原生 Image 的默认 draggable 值。要统一关闭图片拖拽,通常采用两种轻量封装方式,让每处使用只需声明一次即可生效。
方式一:@Extend 扩展(推荐)
定义一个扩展函数,将 draggable 强制设为 false,在所有需要关闭拖拽的 Image 上调用该函数。无需额外组件,清晰直观。
[@Extend](/user/Extend)(Image) function disableDrag() {
.draggable(false)
}
// 使用
Image($r('app.media.icon'))
.width(100)
.height(100)
.disableDrag()
方式二:封装自定义组件
新建一个 NoDragImage 组件,内部使用 Image 并设置 draggable(false),全局用该组件替换原生 Image。
@Component
struct NoDragImage {
@Prop src: ResourceStr
build() {
Image(this.src)
.draggable(false)
}
}
// 使用
NoDragImage({ src: $r('app.media.icon') })
两种方式均能实现一处定义、全局统一,且不影响图片的其他属性。


