【HarmonyOS NEXT】FAQ之应用框架(ArkUI-2)
1、怎样解决List组件在不设置高度的环境下滑动不到底的题目当List组件中的子项比较多的时,同级有其它组件,会下压List,导致显示非常。
给List组件设置layoutWeight()属性。layoutWeight()可以自顺应占满剩余空间父容器尺寸。父容器确定时,设置了layoutWeight的子元素在主轴结构尺寸按照权重举行分配,忽略自己尺寸设置。
2、List组件怎样实现多列结果
给List组件设置List组件的lanes属性,可设置List组件在交织轴按几列结构。
3、怎样设置分组列表的圆角和间距
ListItemGroup中的ListItemGroupStyle设置分组列表的圆角,List的space设置间距。
4、怎样理解和重写onBackPress生命周期
[*] onBackPress属于自定义组件的生命周期回调函数之一,当用户点击返回按钮或侧滑返回时触发,仅@Entry装饰的自定义组件生效。
[*] 返回true表示页面自己处理返回逻辑,不举行页面路由;返回false表示使用默认的路由返回逻辑,不设置返回值按照false处理。
5、怎样获取UI组件的显示或潜伏状态
[*] 方法1:用if条件渲染,可以通过变量去控制显隐,然后使用@Watch监听变量就可以知道组件是否显示潜伏。
[*] 方法2:当组件显示或潜伏时,生命周期aboutToAppear()和aboutToDisappear()会生效,可以感知到组件是否显示潜伏。
6、怎样实现类似插槽的功能
@BuilderParam用来装饰指向@Builder方法的变量,开发者可在初始化自定义组件时对此属性举行赋值,为自定义组件增加特定的功能。该装饰器用于声明恣意UI描述的一个元素,类似slot占位符。
7、怎样解决子组件全屏后margin不会生效的题目
父组件全屏,子组件默认撑满,再设置左右margin值,实际上子组件会超出屏幕范围外边距。可以使用constraintSize属性来限定最大宽高。
8、怎样实现手指脱离屏幕后的惯性滑动结果
使用PanGesture拖动手势事件连合animateTo显示动画可以实现惯性滑动结果
9、怎样监听当前屏幕的横竖屏状态?怎样实现页面跟随屏幕横竖屏主动旋转
应用可以通过diplay.on监听屏幕状态改变。实现页面跟随屏幕横竖屏主动旋转的方法:
1、Abilty级别配置:在模块配置文件module.json5中将EntryAbility设置为"orientation"。
2、动态设置:使用window.setPreferredOrientation设置窗口方向。
10、customDialog中调用router.push启动新页面,会把customDialog关闭,怎么实如今不关闭弹窗的前提下启动新页面
在路由跳转时,需要获取到主窗口的UIContext,再调用路由跳转。
11、怎样实现如了局景:瀑布流滑动时,数据的无限加载和显示
[*] 使用LazyForEach做瀑布流子节点。
[*] 参考瀑布流性能优化在FlowItem的onAppear中判断是否即将触底,提前在LazyForEach数据源尾部新增数据;或在onScrollIndex事件中根据当前index举行判断。
12、怎样解决sidebar侧边栏出现时,遮挡住下方的导航栏的题目?盼望能自行控制侧边栏的上下层级
将被遮挡的导航栏作为SideBarContainer组件的第二个子组件使用,使其成为内容区的一部分,SideBarContainer的侧边栏只会遮挡内容区自身宽度的部分,别的部分可以正常看到。
13、有哪些实现图文混排的方式,每种方式的优劣点是什么,保举场景是什么
[*] 如果做页面展示,可通过Text嵌套ImageSpan大概容器组件如Row、Colunm下嵌套Text&Image组件,保举前者。
[*] 如果要举行编辑,可使用RichEditor控件。
14、怎样处理父子组件间的事件通报,比方,怎样解决滑动冲突
[*] 系统会基于触摸测试来网络需要响应事件的控件,测试的顺序由父组件向子组件伸张,后续手势的识别和竞争都基于hittest结果举行;
[*] 应用可通过改变组件上 hitTestBehavior 的值来改变系统对其的hittest结果;
[*] 更进一步的可通过自定义事件和自定义手势判定能力来细化对手势识别和竞争结果的干预;
15、使用ForEach&LazyForEach循环渲染时,会出现更改数据源时,界面不刷新的环境。怎样解决
ForEach/LazyForEach刷新原理:如果开发者没有写keyGenerator,框架会主动基于item和index生成key, 如果函数缺省,框架默认的键值生成函数为(item: T, index: number) => { return index + '__' + JSON.stringify(item); }, 修改状态变量数据源时,要ForEach或LazyForEach会捕捉到key的厘革,从而通过重建组件节点来刷新。
16、怎样主动控制组件刷新?比方在使用Canvas的场景需要使用代码主动刷新UI
Canvas组件最终的显示内容分两种:
[*] 一是组件通用属性的绘制内容,比如背景致,boarder等这类组件属性方法设置的渲染属性,这类属性是可以通过状态变量驱动更新的。
[*] 二是通过CanvasRenderingContext2D绘制接口由应用自行绘制的内容。该类下令绘制时接口不响应状态变量,只要调用就会在下一帧刷新绘制内容,不需要开发者主动控制刷新。
更多详情查看:文档中心
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]