React-Native中动态设置RTL / LTR

5
我希望能够通过属性动态地设置我的应用方向。 React Native允许根据设备的默认语言设置方向,但我想根据用户数据中的区域设置来选择方向。
到目前为止,我在MainApplication.java中使用以下代码强制所有用户仅使用LTR:
I18nUtil sharedI18nUtilInstance = I18nUtil.getInstance();
sharedI18nUtilInstance.allowRTL(getApplicationContext(), false);

我现在正在寻找一种方法来切换代码中的“false”,根据我的用户区域设置更改为布尔值。但是我不知道如何实现这一点...
其他信息:
- Android 设备 - RN 版本:0.40.0

请查看我的答案:https://stackoverflow.com/a/56248927/427622 - Fareed Alnamrouti
1个回答

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();
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接