做nvue页面开发,想用原生组件实现带自定义Emoji的图文混排,Android原生端使用TextView构建,想使其自适应高度,遇到一个棘手的问题是TextView渲染出来后在js层的flex布局里无法撑开高度,类似于原生组件使用了absolute定位,尝试计算出TextView的高度然后调用Weex的updateNativeStyle手动更新原生组件的高度样式,发现偶尔能生效,偶尔不能生效,百思不得其解,不知有没有朋友遇到类似的问题,一起研究下。
Android端指定TextView布局高度为WRAP_CONTENT,然后在onLayout回调执行 updateNativeStyles
ViewGroup.LayoutParams lp = mTextView.getLayoutParams();
lp.width = ViewGroup.LayoutParams.MATCH_PARENT;
lp.height = ViewGroup.LayoutParams.WRAP_CONTENT;
mTextView.setLayoutParams(lp);
updateNativeStyles("height", mTextView.getHeight());
js层样式
《NativeText class="desc" :content="topicInfo.intro" :fontSize="30" fontColor="#777"/》
.desc {
margin-top: 32rpx;
width: 686rpx;
}
iOS端类似操作,原生计算出UILabel高度,然后调用updateLayoutStyles更新样式,可以正常撑开。
[self.labelView sizeToFit];
[self updateLayoutStyles:@{@"height": @(self.labelView.frame.size.height)}];
a***@163.com (作者)
试了下,包括postDelay 200ms,也不好用,一会儿能撑开,一会儿又撑不开
2022-03-29 14:10
a***@163.com (作者)
WXBridgeManager.getInstance().post(new Runnable() {
@Override
public void run() {
WXBridgeManager.getInstance().setStyleHeight(getInstanceId(), getRef(), height);
}
});
可行
2022-03-29 14:52