facebook / react-native

A framework for building native applications using React
https://reactnative.dev
MIT License
118k stars 24.17k forks source link

Android - Composer - Previous text is cut off after creating next line #45522

Open gedu opened 1 month ago

gedu commented 1 month ago

Description

When the TextInput component is controlled and the multiline prop is set to true, the text gets cut off after writing some text and adding a new line. However, when a new character is added, the text displays correctly.

Steps to reproduce

  1. Add a TextInput
  2. set the value prop and onChangeText
  3. set as true the multiline prop
  4. Add some text
  5. Add a new line, tapping the Enter button on the keyboard
  6. The text is cut off

React Native Version

0.74.3

Affected Platforms

Runtime - Android

Output of npx react-native info

System:
  OS: macOS 13.6.7
  CPU: (10) arm64 Apple M1 Pro
  Memory: 41.83 MB / 16.00 GB
  Shell:
    version: "5.9"
    path: /bin/zsh
Binaries:
  Node:
    version: 20.14.0
    path: ~/.nvm/versions/node/v20.14.0/bin/node
  Yarn:
    version: 1.22.22
    path: /opt/homebrew/bin/yarn
  npm:
    version: 10.7.0
    path: ~/.nvm/versions/node/v20.14.0/bin/npm
  Watchman:
    version: 2023.11.27.00
    path: /opt/homebrew/bin/watchman
Managers:
  CocoaPods:
    version: 1.15.2
    path: /Users/eduardograciano/.gem/bin/pod
SDKs:
  iOS SDK:
    Platforms:
      - DriverKit 22.4
      - iOS 16.4
      - macOS 13.3
      - tvOS 16.4
      - watchOS 9.4
  Android SDK: Not Found
IDEs:
  Android Studio: 2022.3 AI-223.8836.35.2231.10671973
  Xcode:
    version: 14.3.1/14E300c
    path: /usr/bin/xcodebuild
Languages:
  Java:
    version: 17.0.10
    path: /usr/bin/javac
  Ruby:
    version: 2.7.5
    path: /Users/eduardograciano/.rbenv/shims/ruby
npmPackages:
  "@react-native-community/cli": Not Found
  react: Not Found
  react-native: Not Found
  react-native-macos: Not Found
npmGlobalPackages:
  "*react-native*": Not Found
Android:
  hermesEnabled: false
  newArchEnabled: false
iOS:
  hermesEnabled: true
  newArchEnabled: true

Stacktrace or Logs

-

Reproducer

https://github.com/gedu/android-composer-reproducer

Screenshots and Videos

https://github.com/user-attachments/assets/67a44e6e-c8bc-470a-b29b-48b7846b1d36

Screenshot 2024-07-18 at 15 56 24
github-actions[bot] commented 1 month ago
:warning: Add or Reformat Version Info
:information_source: We could not find or parse the version number of React Native in your issue report. Please use the template, and report your version including major, minor, and patch numbers - e.g. 0.70.2
shubhamguptadream11 commented 1 month ago

@gedu I checked this, it is reproducible in new architecture working correctly in old one. @cortinico I am looking into this.

shubhamguptadream11 commented 1 month ago

@cortinico While debugging this I found this TODO: https://github.com/facebook/react-native/blob/245e5d9d951b36d578db29f218da77a274fff8d9/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.java#L1342 Here we are setting padding to zero. Where do we need to move this code block?

j-piasecki commented 1 month ago

I think it's the same issue as this PR is fixing - https://github.com/facebook/react-native/pull/42331

shubhamguptadream11 commented 1 month ago

@j-piasecki I think your forked repo is not in sync with main one. This file: packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManagerMapBuffer.java no longer exists currently. Also the code in this file changed: packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManager.java Can you just check once. I am trying to test this fix.