首页 > 解决方案 > 反应原生道具allowFontScaling在android上不起作用

问题描述

我是react-native 的新手,如果我从设备设置中增加文本大小,我想修复应用程序所有屏幕中的文本大小,那么我尝试过的字体大小也应该相同:

Text.defaultProps.allowFontScaling=false;

在 android.index.js 和

public void adjustFontScale(Context context, Configuration configuration) {
    configuration.fontScale =(float) 0.85;
    DisplayMetrics metrics = context.getResources().getDisplayMetrics();
    WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
    wm.getDefaultDisplay().getMetrics(metrics);
    metrics.scaledDensity = configuration.fontScale * metrics.density;
    context.getResources().updateConfiguration(configuration, metrics);

}

在 mainactivity.jsoncreate()之后调用super.onCreate();

并且从 AndroidManifest.xml 链接的自定义主题也不起作用

如果有人对此有其他解决方案,请帮助我。

它在 ios 设备上完美运行。

标签: androidreact-nativeandroid-layoutandroid-activityreact-redux

解决方案


(应该是评论,但我没有代表!)

似乎是字体缩放的一些错误,请在此处查看一些问题:

https://github.com/facebook/react-native/issues/18827

有人评论:

同样在 React Native 0.56.0 中设置 TextInput.defaultProps.allowFontScaling = false; 根本不起作用。

有人为此问题创建了一个库,但是我没有对此进行测试:

https://github.com/NelGarbuzova/react-native-stylized-placeholder

更新:我已经在我的 Android 模拟器上对此进行了测试,它的工作原理如下:

"react": "16.3.0-alpha.0",
"react-native": "0.55.0",


public render() {
    return (
        <View>
            <Text allowFontScaling={false}>Text Scaling</Text>
            <Text>No Text Scaling</Text> 
        </View>
    )
}

Pixel 2(运行 28)上的结果如下

在此处输入图像描述


推荐阅读