我在Android应用中自定义了文本视图。而且我想用反应本机来使用它。所以我按照指南把它写成:
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没有propType用于原生道具CustomizedTextView.allowFontScaling of native type boolean
如何解决?感谢。
答案 0 :(得分:1)
修正了,我的不好。
该错误已暗示我应该设置'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
}
}
希望它会有所帮助。