2

我正在开发一个混合应用程序反应原生 + Android。我希望整个应用程序的字体大小一致。所以我想访问在 Android 的 dimen.xml 中声明的字体大小,在这里我为不同设备的不同尺寸创建了存根。我可以像这样通过本机模块公开它

@ReactMethod
public float getFontSize(Callback callback){
    callback.invoke(mContext.getResources().getDimension(R.dimen.text_h1));
    return mContext.getResources().getDimension(R.dimen.text_h1);
}

我可以像这样从本机反应中访问它

NativeModules.Utilities.getFontSize((textsize)=>console.log(textsize))

但是,我怎样才能将它添加到我的以下样式中?

TextStyleH1: {
    ...Platform.select({
      ios: {
        fontFamily: "PFEncoreSansPro-Book",
      },
      android: {
        fontFamily: "pfencoresanspro_book",
      },
    }),
    fontSize: 18, // I want to change to textsize returned from NativeModule
  },

澄清

我的样式在 styles.js 中定义,其中

const styles = StyleSheet.create({
   ...
});

因为我希望它可以重复使用,因为我有 14 种不同的文本样式并且<Text />在我的组件中有很多。所以我只想改变styles.js里面的fontSize(如果可能的话)

4

1 回答 1

1

您必须通过附加样式来添加它:

componentWillMount() {        
    NativeModules.Utilities.getFontSize((textsize)=>this.setState({textsize}));
}

render() {
    return (
        <Text style={[styles.TextStyleH1, {
            fontSize: this.state.textsize
        }]}>
            Sample Text
        </Text>
    );
}
于 2017-07-31T09:30:24.807 回答