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单位换算
812浏览 • 1回复 待解决
HarmonyOS scroll高度设置问题
2467浏览 • 1回复 待解决
HarmonyOS list设置问题
627浏览 • 1回复 待解决
HarmonyOS 关于alertDialog样式设置问题
844浏览 • 1回复 待解决
HarmonyOS 关于代理提醒设置问题
1956浏览 • 1回复 待解决
HarmonyOS TextstateStyles设置fontColor问题
1254浏览 • 1回复 待解决
HarmonyOS 阴影设置问题
1432浏览 • 1回复 待解决
HarmonyOS 关于动态设置组件宽度问题
1461浏览 • 1回复 待解决
HarmonyOS 横竖屏设置问题
775浏览 • 1回复 待解决
关于DES加密设置问题
1074浏览 • 1回复 待解决
HarmonyOS Flex 布局设置问题
1772浏览 • 1回复 待解决
HarmonyOS 启动页设置问题
1727浏览 • 1回复 待解决
HarmonyOS 设置横竖屏问题
834浏览 • 1回复 待解决