отреагировать родной реквизит allowFontScaling не работает на Android - PullRequest
0 голосов
/ 11 сентября 2018

Я новичок в реагирующем родстве и хочу исправить размер текста на всех экранах приложения, если я увеличу размер текста из настроек устройства, тогда и размер шрифта должен быть таким же, как я пытался,

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.js, вызываемом в oncreate () после super.onCreate ();

, а также пользовательская тема, связанная с AndroidManifest.xml, не работала

, если у кого-то есть другое решение для этого, пожалуйста, помогите мне.

он отлично работает на устройстве ios.

Ответы [ 2 ]

0 голосов
/ 31 июля 2019

Вокруг этого возникло около 5 проблем с GitHub.RN продолжает преуменьшать и закрывать их вместо исправления.

0 голосов
/ 11 сентября 2018

(Должен быть комментарий, но у меня нет представителя!)

Кажется, что есть некоторые ошибки с масштабированием шрифта, взгляните на несколько вопросов здесь:

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

Результат ниже для пикселя 2 (работает 28)

enter image description here

...