RTL在RTL设备中被强制使用

时间:2016-10-02 08:43:46

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

新版本的React Native已发布对RTL设备的支持: https://facebook.github.io/react-native/blog/2016/08/19/right-to-left-support-for-react-native-apps.html
然而,似乎在RTL安卓设备中,RTL布局是强制的,并且没有办法改变它,所以现在所有的应用程序都被破坏了RTL设备。 如何强制我的应用使用LTR?

4 个答案:

答案 0 :(得分:35)

我设法通过添加到MainApplication.java

来解决此问题
import com.facebook.react.modules.i18nmanager.I18nUtil;

public class MainApplication extends Application implements ReactApplication {
    @Override
    public void onCreate() {
        super.onCreate();

        // FORCE LTR
        I18nUtil sharedI18nUtilInstance = I18nUtil.getInstance();
        sharedI18nUtilInstance.allowRTL(getApplicationContext(), false);
        ....
    }
}

答案 1 :(得分:5)

在manifest.xml文件中,将android:supportsRtl="false"添加到您的应用程序标记

答案 2 :(得分:1)

如果您正在使用Expo

import { I18nManager} from 'react-native';
I18nManager.allowRTL(false);

export default class <className> extends Component {



}

答案 3 :(得分:1)

@atlanteh的回答是正确的。 我只是为有ios背景但对Android不太了解的用户提供详细的答案。

首先,尝试一次。如果第一个不起作用,则尝试2。如果仍然不起作用,则尝试两者。然后它将显示预期的输出。

答案1

MainApplication.java

public class MainApplication extends Application implements ReactApplication {
    @Override
    public void onCreate() {
        super.onCreate();

        // FORCE LTR
        I18nUtil sharedI18nUtilInstance = I18nUtil.getInstance();
        sharedI18nUtilInstance.allowRTL(getApplicationContext(), false);
        ....
    }
}

答案2

AndroidManifest.xml

我在android:supportsRtl="false"标记中添加了application

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="com.appname">
    ........
    <application 
      android:supportsRtl="false"
      android:name=".MainApplication"
      android:label="@string/app_name"
      android:icon="@mipmap/ic_launcher"
      android:roundIcon="@mipmap/ic_launcher_round"
      android:allowBackup="false"
      android:theme="@style/AppTheme">
      android:name="com.facebook.react.devsupport.DevSettingsActivity" />
       ....
    </application>

</manifest>