Próbuję stworzyć natywną aplikację, która wygląda jak istniejąca aplikacja internetowa. Mam stałą stopkę na dole okna. Czy ktoś ma pojęcie, jak można to osiągnąć dzięki React Native?
w istniejącej aplikacji jest to proste:
.footer {
position: fixed;
bottom: 0;
}
react-native
4ega
źródło
źródło
height
do widoku stopki i wygląda dobrze na 4s i 6Oto rzeczywisty kod oparty na odpowiedzi Colina Ramsaya:
źródło
Używam stałych stopek dla przycisków w mojej aplikacji. Sposób implementacji stałej stopki wygląda następująco:
A jeśli potrzebujesz stopki, aby przesunąć się w górę, gdy pojawi się klawiatura, możesz na przykład użyć:
Następnie użyj {bottom: this.state.btnLocation} w swojej klasie ze stałą stopką. Mam nadzieję, że to pomoże!
źródło
import { Keyboard} from 'react-native'; Keyboard.addListener('keyboardWillShow', this.showHandler)
zamiast tego.Najpierw otrzymujesz Wymiar, a następnie manipulujesz nim za pomocą stylu elastycznego
W renderowaniu
Inną metodą jest użycie flex
źródło
@Alexander Dzięki za rozwiązanie
Poniżej znajduje się kod dokładnie tego, czego szukasz
Poniżej znajduje się zrzut ekranu
źródło
Możesz także rzucić okiem na NativeBase ( http://nativebase.io ). Jest to biblioteka komponentów dla React Native, która zawiera ładną strukturę układu ( http://nativebase.io/docs/v2.0.0/components#anatomy ), w tym nagłówki i stopki.
To trochę jak Bootstrap for Mobile.
źródło
Proste rzeczy tutaj:
źródło
Poniżej znajduje się kod do ustawiania stopki i elementów powyżej.
źródło
Sposób, w jaki to zrobiłem, polegał na tym, że miałem widok (nazwijmy to P) z flexem 1, a następnie wewnątrz tego widoku miały 2 dodatkowe widoki (C1 i C2) odpowiednio z flexem 0,9 i 0,1 (możesz zmienić wysokości flex na wymagane wartości) . Następnie wewnątrz C1 mają widok przewijania. To zadziałało idealnie dla mnie. Przykład poniżej.
źródło
Coś podobnego można by osiągnąć w reakcji native speakera
position: absolute
Jest jednak kilka rzeczy, o których należy pamiętać.
absolute
ustawia element względem jego rodzica.Praktyczna definicja stylu wyglądałaby mniej więcej tak:
źródło
Najprostszym rozwiązaniem okazało się użycie fleksa.
źródło
Kiedy flex jest liczbą dodatnią, sprawia, że komponent jest elastyczny i będzie miał rozmiar proporcjonalny do jego wartości flex. Tak więc komponent z flex ustawionym na 2 zajmie dwa razy więcej miejsca niż komponent z flex ustawionym na 1.
źródło
Najlepszym sposobem jest użycie właściwości justifyContent
jeśli masz wiele elementów widoku na ekranie, możesz użyć
źródło
następnie napisz te style
działał jak urok
źródło
W przypadku problemów z Androidem:
w app / src / AndroidManifest.xml zmień windowSoftInputMode na następujący.
Nie miałem z tym absolutnie żadnych problemów w iOS, korzystając z React-Native i KeyboardAwareScroll. Miałem zaimplementować mnóstwo kodu, aby to rozgryźć, dopóki ktoś nie dał mi tego rozwiązania. Działał doskonale.
źródło
jeśli po prostu używasz reakcji natywnej, aby móc użyć następującego kodu
możesz również użyć https://docs.nativebase.io/ w swoim macierzystym projekcie React, a następnie zrobić coś takiego
React_Native
NativeBase.io
źródło
Ustaw android: windowSoftInputMode = "adjustPan" w swoim pliku manifestu i będzie działać zgodnie z oczekiwaniami.
źródło
Myślę, że najlepiej i najłatwiej będzie jak poniżej, po prostu umieść resztę widoku w treści i stopce w osobnym widoku.
lub możesz użyć stopki z native-base
źródło
Sugestia 1
=> Treść ze stałą stopką
Edytuj 2
=> Body & Fixed footer with tabs
Uwagi
Zalety
Możemy korzystać z tej prostej stopki bez reagowania na dolną nawigację
źródło