Как настроить размер шрифта в соответствии с представлением в React Native для Android?

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

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

И работает ли он с другими компонентами, такими как кнопка и touchableopacity?

Ответ 1

Попробуйте этот подход. Рассмотрите возможность установки размера шрифта в соответствии с шириной экрана следующим образом:

width: Dimensions.get('window').width

Поэтому в вашем стиле попробуйте сделать процентный расчет, чтобы размер шрифта соответствовал экрану

style={
  text:{
     fontSize:0.05*width
  }
}

это будет работать для всех экранов (как Android, так и IOS)

Ответ 2

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

<Text adjustsFontSizeToFit minimumFontScale={.5}>Hello World</Text>

Используйте эти три реквизита вместе, чтобы получить лучшие результаты:

adjustsFontSizeToFit
minimumFontScale={.5} // or any other value you prefer between 0 and 1
allowFontScaling

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

fontSize,
height,
width, 
flex,
margin

Ответ 3

Лучший способ реализовать размер шрифта, основанный на разрешении, - это использовать Pixel Ratio, я реализовал этот подход во всем моем приложении. Pixel Ratio - это то, что поможет вам в этом. Меньше соотношение пикселей означает меньшее разрешение, большее количество пикселей - большее разрешение.

PixelRatio.get() === 1 Android-устройства mdpi (160 dpi)

PixelRatio.get() === 1.5 hdpi Android-устройства (240 dpi)

PixelRatio.get() === 2 iPhone 4, 4S iPhone 5, 5c, 5s iPhone 6 xhdpi Android-устройства (320 dpi)

PixelRatio.get() === 3 iPhone 6 плюс xxhdpi Android-устройства (480 dpi)

PixelRatio.get() === 3.5 Nexus 6

Ниже фрагмента кода является таблица стилей, и вы можете использовать классы в коде JSX

import { StyleSheet, PixelRatio } from 'react-native'
import { Colors } from '../../Themes/'
const FONT_SIZE = 12;
FONT_SIZE_Requests = 12;
if ((PixelRatio.get() <= 1.5) &&(PixelRatio.get() > 1)) {
  FONT_SIZE = 9;
  FONT_SIZE_Requests = 9;
} else if (PixelRatio.get() <=1) {
  FONT_SIZE = 9;
  FONT_SIZE_Requests=9;
} else if ((PixelRatio.get() > 1.5) &&( PixelRatio.get() >= 2) && (PixelRatio.get() < 3)) {
         FONT_SIZE = 10;
         FONT_SIZE_Requests = 10;
       } else if (PixelRatio.get() >= 3) {
         FONT_SIZE = 11;
         FONT_SIZE_Requests = 11;
       }
export default StyleSheet.create({
  header: {
    backgroundColor: Colors.ClayColor
  },
  transparentHeader: {
    backgroundColor: "#ffffff",
    elevation: 0
  },
labelStyle:{
   margin:0,
        fontFamily:'roboto_medium',
        fontSize:FONT_SIZE
},
labelStyleRequests:{
  margin:0,
  fontFamily:'roboto_medium',
  fontSize:FONT_SIZE_Requests
}
})