所谓
所谓
  • 发布:2017-12-13 23:11
  • 更新:2018-01-08 17:51
  • 阅读:1524

原生View下的 tags 重绘后的 困惑

分类:HTML5+

参考 mui的 凸起 底部导航栏的 实例, 在实际项目中需要 修改 选项卡的位置
通过 drawText 可以更新 某一个选项卡的位置,界面上也显示位置变化了
但是当 点击 切换选项卡事件的时候 ,改变后的位置又回去了,
通过跟踪发现,点击选项卡事件中 改变 选项卡颜色的时候,又重新绘制了

但是 currTag.position 的值却没有改变。

var self = plus.webview.currentWebview(),
nviewEvent = plus.nativeObj.View.getViewById("tabBar"), // 获取nview控件对象
nviewObj = self.getStyle().subNViews[0], // 获取nview对象的属性
currTag = nviewObj.tags[3]; // 获取当前需重绘的tag

console.log('重绘前位置left:20%:' + JSON.stringify(currTag.position));
//修改前的left 位置是20% 通过下面代码,left值改成 25%, 在界面上变化了
nviewEvent.drawText(currTag.text, {top: "4px",left: "25%",width: "25%",height: "24px"},{align: "center",size: "10px"}, currTag.id);

//这里再次获取修改后的值,输出 left 依然是20%
console.log('重绘后位置' JSON.stringify(currTag.position));

2017-12-13 23:11 负责人:无 分享
已邀请:
n***@gmail.com

n***@gmail.com

这个问题是这样的,getStyle和setStyle是配套操作,但是在这里你调用的是drawText方法,并没有涉及到setStyle 所以并不会去改变你getStyle里面的值。这里的drawText 方法只会执行重绘,并不会去做同步该节点属性的操作。

另外,既然你通过drawText方法重绘了控件,是已知改变了某个节点的,为什么还要通过getStyle去读取?

该问题目前已经被锁定, 无法添加新回复