Текст обрезается в Android для реагирования на родной

Я работаю над React Native, и я новичок в этом. Я пытаюсь отобразить текст, но он отображается в конце текста Android ... и не показывает полный текст. Это происходит только в Android, в iOS работает нормально.

Я написал следующий код

<Text
  numberOfLines = {1}
  adjustsFontSizeToFit
  minimumFontScale = {0.1}
  style = {labelStyle} //labelStyle nothing I have written
></Text>

Может ли кто-нибудь предложить мне, где я делаю неправильно в коде?

Текст обрезается в Android для реагирования на родной

пожалуйста, поделитесь дополнительным кодом, например, родительским представлением или т. д.

Paras Korat 19.02.2019 04:32
14
1
20 570
13
Перейти к ответу Данный вопрос помечен как решенный

Ответы 13

Ответ принят как подходящий

Обычно это происходит, когда у вас есть это: fontWeight:bold и ваше устройство Android, например, Oneplus или Oppo (хотя есть и другие бренды), это конфликт с вашим системным шрифтом.
Чтобы исправить, вы можете добавить другие fontFamily или поставить 2 пробела перед словом, кажется, это тоже работает.
См.: https://github.com/facebook/react-native/issues/15114

Редактировать

Установка textBreakStrategy на simple в текстовом элементе также работает для некоторых устройств, таких как Samsung Galaxy S10, Google Pixel

это действительно интересно. это происходит только с моим одним плюсом и беспокоит меня уже несколько дней. спасибо за указатель!

jschuss 26.07.2019 08:14

Это решило проблему для устройств OnePlus и Samsung. Спасибо.

Gowtham 24.09.2020 17:12

Умная. Почему я не мог думать о пустом тексте?

Jeff Gu Kang 14.10.2020 07:00

Если вы удалите numberOfLines, он будет отображаться правильно. Если он по-прежнему не отображается, возможно, родительское представление имеет фиксированную высоту (или maxHeight).

У меня была проблема с вырезанием текста по горизонтали. используя lineHeight для текстовых компонентов, и бум, моя проблема решена

Как оказалось, последняя строка наших абзацев обрезалась из-за 'highQuality' значения параметра textBreakStrategy. Мы изменили это на 'simple', и теперь отображается весь наш текст. Судя по всему highQuality на самом деле низкое качество.

Для тех, кто нашел предоставленные решения, не работающие, как в моем случае вот мое решение для вырезания текста на телефонах OnePlus:

просто установите стиль компонента с этими свойствами

alignSelf: 'stretch',
textAlign: 'center',

это, вероятно, эквивалент настройки Android match_parent. Не проверял, как это повлияет на iOS, поскольку сейчас у меня нет такой возможности.

Вы можете исправить это, добавив дополнительный пробел в конце, который равен не хороший обходной путь.

Рекомендуемые: Включите семейство шрифтов по умолчанию в ваше приложение, и оно будет одинаково работать на всех устройствах.

После долгой борьбы с этим я, наконец, понял это.

Похоже, что по умолчанию Text устанавливает для свойства textBreakСтратегия значение *highQuality*.

Изменение его на * простое * решило мою проблему.

Ссылка здесь: https://reactnative.dev/docs/0.56/text#textbreakstrategy

В моем случае добавление fontFamily: 'arial' к текстовому компоненту помогло. Даже fontFamily: 'abc' тоже работает. Я думаю, что для этого просто нужно установить fontFamily.

Добавление дополнительного пространства или добавление textBreakStrategy как «простого» у меня не сработало.

Я добавил alignSelf:"stretch" для стиля компонента «Текст», и, наконец, это сработало. Если вы хотите, чтобы текст был в центре, просто добавьте textAlign: "center".

Надеюсь, это кому-то поможет.

Есть и другие лучшие способы решить эту проблему. но в моем случае добавление custom font устранило проблему с вырезанием текста и выравниванием шрифта на разных устройствах.

Добавление пользовательского шрифта может легко решить проблему.

Как добавить пользовательские шрифты = проверить этот ответ StackOverflow

реактивные официальные документы по пользовательским шрифтам

Добавление стиля flex: x к <View> вокруг вырезаемого элемента <Text> сработало для меня при использовании OnePlus 7T.

Flex: 1 работал на меня. Спасибо

Kshitij 30.11.2021 08:05

попробуй это.

  1. удалить fontWight : полужирный
  2. добавьте стиль в текстовый тег, например, = ширина: «100%» (в соответствии с вашим размером текста)

Я просто добавил отступы, и проблема решена

если текст обрезан слева, просто добавьте paddingLeft:10

в моем случае текст был обрезан сверху, когда я увеличивал размер шрифта, поэтому я добавил paddingTop:20

если текст обрезан сверху добавить textAlignVertical: 'bottom'

Другие вопросы по теме