react / react/react-native

Different TextInput behavior with flex-basis:0

Offen
#38,517 0 Kommentare 1 Reaktion 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Component: TextInput Issue: Author Provided Repro Needs: Triage :mag:
Vorherrschende Sprache
C++
Sterne
127k
Forks
25.3k
Ø Merge
1 T. 23 Std.
Gemergte PRs (30 T.)
4

Beschreibung

Description

Android and IOS exhibit different behaviors in the following scenario: a textInput with a thick border and flex:1, within a view with flex:1.

On Android, the border is not taken into account to determine the size to allot to the textInput.

Possibly related to https://github.com/facebook/react-native/issues/38518

React Native Version

0.72.3

Output of npx react-native info

System:
OS: Windows 10 10.0.19045
CPU: (32) x64 AMD Ryzen Threadripper PRO 3955WX 16-Cores
Memory: 92.13 GB / 127.86 GB
Binaries:
Node:
version: 20.4.0
path: C:\Program Files\nodejs\node.EXE
Yarn: Not Found
npm:
version: 9.8.0
path: C:\Program Files\nodejs\npm.CMD
Watchman: Not Found
SDKs:
Android SDK: Not Found
Windows SDK: Not Found
IDEs:
Android Studio: AI-222.4459.24.2221.10121639
Visual Studio:
- 17.6.33723.286 (Visual Studio Community 2022)
Languages:
Java: 1.8.0_372
Ruby: Not Found
npmPackages:
"@react-native-community/cli": Not Found
react:
installed: 18.2.0
wanted: 18.2.0
react-native:
installed: 0.72.3
wanted: 0.72.3
react-native-windows: Not Found
npmGlobalPackages:
"react-native": Not Found
Android:
hermesEnabled: true
newArchEnabled: false
iOS:
hermesEnabled: Not found
newArchEnabled: Not found

Steps to reproduce

In the example below, the text is below the textInput's border on web and iOS, but above the border on Android, leaving almost no room for the textInput's background.

Snack, code example, screenshot, or link to a repository

https://snack.expo.dev/ANgohiA9k?platform=android

        <View style={{maxHeight:1000, minHeight:50, backgroundColor:'green'}}>
          <View style={{backgroundColor: 'yellow',
              flex:1,
              height:200,
              marginTop: 20,
              }}>
            <TextInput style={{borderTopWidth: 20, borderColor: 'red', backgroundColor:'blue', height:100, flex:1, padding:0 }}
              editable
              multiline
              value="bla bla bla 2"/>
          </View>
        </View>

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginne mit der im Issue verlinkten Snack-Reproduktion und führe sie auf Android, iOS und im Web aus. Vergleiche das TextInput-Layout im bereitgestellten verschachtelten View-Beispiel, insbesondere den oberen Rand von 20px, die Größenanpassung mit flex:1 und die Platzierung des mehrzeiligen Texts. Als erledigt gilt die Aufgabe, wenn die Plattformen den Rand konsistent berücksichtigen und Text und Hintergrund mit äquivalenten Abständen gerendert werden.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
android, ios, react-native
Bereich
mobile
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.