HarmonyOS renderNode的frame设置问题

设置rendernode的frame其实是想和父类容器大小一样,但貌似在添加readernode的时候 父类frame为0 不太方便取,怎么做能方便的从父类容器拿到父类容器的frame呢?使用的代码片段如下:

makeNode(uiContext: UIContext): FrameNode | null { 
  this.rootNode = new FrameNode(uiContext); 
  const renderNode = this.rootNode.getRenderNode(); 
  if (renderNode !== null) { 
    let newNode = new MyRenderNode(); 
    const width: number = renderNode.frame.width // 为0 
    const height: number = renderNode.frame.height // 为0,怎么能取到呢,rootNode和uiContext好像都拿不到frame信息 
    newNode.frame = { x: 0, y: 0, width: width, height: height } 
    newNode.onDrawCB = this.onDrawCB 
    renderNode.appendChild(newNode); 
  } 
  return this.rootNode; 
}
HarmonyOS
2024-08-09 15:31:27
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
FengTianYa

renderNode本身没有布局算法,不会把大小传递给子节点,没有继承关系,可以从父节点拿到frame属性再往下设置,直接设置match_parent这种是没有的,如果没有给frame赋值,则默认值为{“x”:0,“y”:0,“width”:0,“height”:0},比如:

const renderNode = new RenderNode(); 
renderNode.backgroundColor = 0xffff0000; 
renderNode.frame = { x: 10, y: 10, width: 100, height: 100 }; 
const frame = renderNode.frame; 
console.log(`frame====` + JSON.stringify(frame)); 
const width = renderNode.frame?.width 
const height = renderNode.frame?.height 
console.log("wid==" + width, "hei====" + height); 
const renderNode2 = new RenderNode(); 
renderNode2.frame = frame; 
console.log(`frame2====` + JSON.stringify(renderNode2.frame));
分享
微博
QQ
微信
回复
2024-08-09 17:58:07
相关问题
HarmonyOS RenderNode单位换算
25浏览 • 1回复 待解决
HarmonyOS scroll高度设置问题
974浏览 • 1回复 待解决
HarmonyOS 关于代理提醒设置问题
482浏览 • 1回复 待解决
HarmonyOS Flex 布局设置问题
453浏览 • 1回复 待解决
HarmonyOS 启动页设置问题
585浏览 • 1回复 待解决
HarmonyOS avplayer s设置倍速问题
39浏览 • 1回复 待解决
关于DES加密设置问题
189浏览 • 1回复 待解决
HarmonyOS NODE_LINEAR_GRADIENT设置问题
305浏览 • 1回复 待解决
HarmonyOS Tabs组件bar背景设置问题
417浏览 • 1回复 待解决
HarmonyOS web_view设置超时问题
391浏览 • 1回复 待解决
ConstraintSize尺寸设置问题
546浏览 • 1回复 待解决
HarmonyOS 图片背景及边框圆角设置问题
1033浏览 • 1回复 待解决