如何从android访问维度并将其应用于反应原生的样式

时间:2017-07-31 09:27:57

标签: react-native font-size react-native-android native-module

我正在开发一个混合应用程序反应原生+ Android。我希望整个应用程序的字体大小一致。所以我想访问Android的dimen.xml中声明的字体大小,我已经为不同设备的不同维度创建了存根。我可以通过像

这样的Native Modules公开它
@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(如果可能的话)

1 个答案:

答案 0 :(得分:1)

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

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

render() {
    return (
        <Text style={[styles.TextStyleH1, {
            fontSize: this.state.textsize
        }]}>
            Sample Text
        </Text>
    );
}