在React-Native中动态设置RTL / LTR

时间:2017-01-19 09:28:28

标签: react-native right-to-left react-native-android

我想通过属性动态设置我的app'a方向。 React Native允许根据设备的默认语言设置方向,但我想根据我对用户数据的语言环境属性选择方向。

到目前为止,我在MainApplication.java中使用此代码仅强制所有用户使用LTR:

I18nUtil sharedI18nUtilInstance = I18nUtil.getInstance();
sharedI18nUtilInstance.allowRTL(getApplicationContext(), false);

我现在正在寻找一种方法来将代码中的'false'切换为根据我的用户的语言环境而改变的布尔值。 不知道如何实现......

额外信息:

  • Android设备
  • RN版本:0.40.0

1 个答案:

答案 0 :(得分:2)

您可以使用I18nManager强制语言指导

constructor() {
    super();
    //set user language b default english
    this.state = {
        lang: 'en'
    }
}


componentWillMount() {
          //get user lang form AsyncStorage 
    AsyncStorage.getItem('lang').then((value) => {
         //now you should forceRTL by Language and set Language in your states
        if ((value === 'ar' || value === 'fa' )) {
            I18nManager.forceRTL(true);
        } else {
            I18nManager.forceRTL(false);
        }
        return this.setState({
            lang: value 
        });
    }).done();
}