我在我的Android应用程序中自定义了文本视图。我想将其与react native一起使用。因此,我遵循该指南并将其编写为:

public class CustomizedTextViewManager extends SimpleViewManager<CustomizedTextView> {
...
}


它可以工作,但是不能根据其内容调整textview的高度。我必须在render()中指定一个高度,否则textview将不会扩展。
我想要的是它可以根据其内容重置其高度,就像Rn textview所做的一样。

render(){
...
<CText style={styles.message} >{message.text}</CText> // CText is the CustomizedTextView
...
}

cosnt styles = ...({
...
message:{
        ...
        height: 100,
}
...
})


问题是当textview中的内容很少时,它看起来很仓促。
因此,我查看了ReactTextViewManager.java并重新编写了如下视图:

public class CustomizedTextViewManager extends BaseViewManager<CustomizedTextView,ReactTextShadowNode> {
...
}


表明:
CustomizedTextView没有用于原生prop的propType原生类型boolean的CustomizedTextView.allowFontScaling

如何解决?谢谢。

最佳答案

固定,我不好。

该错误已经暗示我应该设置“ allowFontScaling”之类的道具。
起初,我以为我在本机管理器中缺少实现“ allowFontScaling”。但这不应该。本机管理器已经是Rn文本管理器的子类,它应该实现所有道具。

最后,在Rn调试器中,我发现我应该在'CText.js'的propTypes中添加Text.propTypes和View.proTypes

解:

var iface = {
    name: 'GSMText',
    propTypes: {
        myProp1: PropTypes.string,
        myProp2: PropTypes.number,
        ...Text.propTypes, // must add this tow propTypes
        ...View.propTypes, // other wise will see the red screen
    }
}


希望对您有所帮助。

07-27 23:49