react-native 不能动态Android调用addview方法
Android里面 , 如何动态addview 在rn端都不会刷新,一种办法是 在rn里面调用方法的时候先用setstate方式让view设置成null在刷新出来,治标不治本。虽然能解决,但是很不优雅,第二种方案
加入以下代码
// An highlighted block
@Override
public void requestLayout() {
super.requestLayout();
post(measureAndLayout);
}
private final Runnable measureAndLayout = new Runnable() {
@Override
public void run() {
measure(
MeasureSpec.makeMeasureSpec(getWidth(), MeasureSpec.EXACTLY),
MeasureSpec.makeMeasureSpec(getHeight(), MeasureSpec.EXACTLY));
layout(getLeft(), getTop(), getRight(), getBottom());
}
};
此时你要注意,如果这个view多处使用了。 由于Android 一个view只能add到一个父view里面的机制原因,所以你多处调用的时候,你要提前移除,建议在下次调用之前removeAllViews(); 保守方案在rn初始化constructor的时候给Android原生端发个通知调用removeAllViews后在render;
切记切记 切记!!!后面remove别remove错view