Pisałem natywny moduł Android, który owija BottomSheetBehavior.Owijarka klasy React-native dla CoordinatorLayout i BottomSheetBehavior
bardzo prosty BottomSheetBehavior mogą być realizowane jak to https://gist.github.com/cesardeazevedo/a4dc4ed12df33fe1877fc6cea42475ae
pierwszą rzeczą, że wychodził, cała strona musi być dzieckiem CoordinatorLayout i BottomSheetBehavior na koniec.
Musiałem więc napisać 2 rodzime moduły, <CoordinatorLayout />
i <BottomSheetBehavior />
.
To jest opakowanie bottomSheetBehavior.
BottomSheetBehaviorManager.java
public class BottomSheetBehaviorManager extends ViewGroupManager<BottomSheetBehaviorView> {
@Override
public BottomSheetBehaviorView createViewInstance(ThemedReactContext context) {
return new BottomSheetBehaviorView(context);
}
}
BottomSheetBehaviorView.java
public class BottomSheetBehaviorView extends RelativeLayout {
public BottomSheetBehaviorView(Context context) {
super(context);
int width = ViewGroup.LayoutParams.WRAP_CONTENT;
int height = ViewGroup.LayoutParams.WRAP_CONTENT;
// int height = 1000; // fixed a height works, it only slide up half of the screen
CoordinatorLayout.LayoutParams params = new CoordinatorLayout.LayoutParams(width, height);
params.setBehavior(new BottomSheetBehavior());
this.setLayoutParams(params);
BottomSheetBehavior<BottomSheetBehaviorView> bottomSheetBehavior = BottomSheetBehavior.from(this);
bottomSheetBehavior.setHideable(false);
bottomSheetBehavior.setPeekHeight(200);
}
}
A mój reaguje składnik stały się w ten sposób.
index.android.js
return() {
<CoordinatorLayout style={{flex: 1}}>
<View><!--app--></View>
<BottomSheetBehavior>
<View style={{height: 300}}> <!--height doesnt work-->
<Text>BottomSheetBehavior !</Text>
</View>
</BottomSheetBehavior>
</CoordinatorLayout>
)
i to działa!
ale ja zmaga aby BottomSheet owinąć swoje Childs z wrap_content
, to nie miało przesunąć cały ekran, należy go tylko ślizgać się przez zawiniętego treści (w tym przypadku ipsum lorem tekst), działa z komponentami systemu Android, ale nie działa z komponentami reagowania. A zatem, jak sprawić, by RelativeLayout
zawijał komponent reagujący na siebie? Próbowałem również wdrożyć niektóre measure shadownode, ale nie działało zgodnie z oczekiwaniami, nie wiem, jak działają.
Dodałem ten przykład na moim githubie, aby wszyscy chcieli go wypróbować. https://github.com/cesardeazevedo/react-native-bottom-sheet-behavior
Wow wow absolutnie niesamowite podziękować panu za podzielenie się postaram to i zrobić PR z 'BottomSheetFragment'! :) – Noitidart