最近有个需求,要在react native中嵌入一个原生的视频组件,同事嵌入后发现有问题:
- 内容无法显示
https://musicfe.com/rn-android-webview
参考这个方法,在嵌入之后调用一下。
public void manuallyLayoutChildren(View view) {
int width = view.getMeasuredWidth();
int height = view.getMeasuredHeight();
view.measure(
View.MeasureSpec.makeMeasureSpec(width, View.MeasureSpec.EXACTLY),
View.MeasureSpec.makeMeasureSpec(height, View.MeasureSpec.EXACTLY));
view.layout(0, 0, width, height);
}
- 内容动态变化时的高宽不对,以及原生的edittext输入框无法删除
看了一下,是因为内容变化的时候,一是requestLayout没有正常执行;二是上面云音乐给的代码中,没有触发子view的重绘,所以子view的布局失效了。处理方法文章来源:https://www.toymoban.com/news/detail-744397.html
@Override
public void requestLayout() {
super.requestLayout();
CustomView.this.post(() -> {
if (ViewCompat.isAttachedToWindow(CustomView.this)) {
layoutViews(CustomView.this);
}
});
}
public void layoutViews(View view) {
int width = view.getMeasuredWidth();
int height = view.getMeasuredHeight();
view.measure(View.MeasureSpec.makeMeasureSpec(width, View.MeasureSpec.EXACTLY),View.MeasureSpec.makeMeasureSpec(height, View.MeasureSpec.EXACTLY));
view.layout(0, 0, width, height);
view.invalidate();
}
玩~文章来源地址https://www.toymoban.com/news/detail-744397.html
到了这里,关于react native引用原生组件时无法显示的问题处理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!