Chcę odtworzyć dno Zachowanie arkusz dostarczany w aplikacji Google Maps:
Link to expected behavior.
Próbowałem, używając BottomSheetBehavior i kilka innych bibliotekami 3rd party jak umano AndroidSlidingUpPanel ale problemem, którego nie mogłem uniknąć jest to, że wszystkie przyciągają dolny arkusz pomiędzy stanami (zwinięte i rozwinięte).
Chciałbym mieć arkusz dolny, który można płynnie rozwinąć przesuwając go w górę, bez przyciągania do najbliższego stanu, ale zamiast tego pozostać tam, gdzie użytkownik zatrzymał się z przesuwaniem.Android prześcieradło gładka rozwija, jak Google Maps
Odpowiedz
Można to osiągnąć przez instacji BottomSheetBehavior
i nadrzędny onTouchEvent
wrócić wcześnie ACTION_UP
i ACTION_CANCEL
.
public class CustomBottomSheetBehavior<V extends View> extends BottomSheetBehavior<V> {
public CustomBottomSheetBehavior() {
super();
}
public CustomBottomSheetBehavior(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean onTouchEvent(CoordinatorLayout parent, V child, MotionEvent event) {
int action = event.getActionMasked();
switch (action) {
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_CANCEL:
return true;
}
return super.onTouchEvent(parent, child, event);
}
}
Zapobiega klasę BottomSheetBehavior
z obsługi tych zdarzeń i wyzwalania „rozszerzyć” lub „zapaść” połączenia.
Aby zastosować CustomBottomSheetBehavior
w xml: app:layout_behavior="com.yourpackage.CustomBottomSheetBehavior"
Aby przywrócić domyślną funkcjonalność BottomSheetBehavior
gdy arkusz jest w pełni rozwinięty lub zwinięty, można dodać flagę, która jest tworzona, gdy suwak korekcji osiąga pewna wartość. W poniższym przykładzie zdarzenia dolnego arkusza ACTION_UP
i ACTION_CANCEL
są ignorowane tylko wtedy, gdy przesunięcie slajdu wynosi od 0,1 do 0,9.
public class CustomBottomSheetBehavior<V extends View> extends BottomSheetBehavior<V> {
private boolean isExpandedOrCollapsed;
public CustomBottomSheetBehavior() {
super();
listenForSlideEvents();
}
public CustomBottomSheetBehavior(Context context, AttributeSet attrs) {
super(context, attrs);
listenForSlideEvents();
}
void listenForSlideEvents() {
setBottomSheetCallback(new BottomSheetCallback() {
@Override
public void onStateChanged(@NonNull View bottomSheet, int newState) {
}
@Override
public void onSlide(@NonNull View bottomSheet, float slideOffset) {
isExpandedOrCollapsed = slideOffset < 0.1f || slideOffset > 0.9f;
}
});
}
@Override
public boolean onTouchEvent(CoordinatorLayout parent, V child, MotionEvent event) {
if (!isExpandedOrCollapsed) {
int action = event.getActionMasked();
switch (action) {
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_CANCEL:
return true;
}
}
return super.onTouchEvent(parent, child, event);
}
}
Witam, dziękuję za odpowiedź. Niestety nie mogę przewinąć listy, którą podciągam. –
@SteffenVangsgaard zobacz zaktualizowaną odpowiedź. –
- 1. Android rozwija czcionkę LCD
- 2. Uruchamianie Google Maps z przeglądarki Android
- 3. Google Maps api dla strony rejestracji Android
- 4. Android Google Maps API v2 wyświetlacz trasa
- 5. Google Maps Android V2 i Direction API
- 6. Google Maps Android MapView v2: wyłączanie powiększania
- 7. Android Google Maps V2 Lokalizacja użytkownika
- 8. Google Maps API Android - NullPointerException - setBoundsInParent
- 9. Android Google Maps: wyłączanie przeciągania w MapFragment
- 10. Przenoszenie znaczników w Google Maps v2 Android
- 11. Android Google Maps API: ukryj fragment znacznika
- 12. Narysuj mapę polilinii na drodze Aplikacja Google Maps Google Maps
- 13. DrawerLayout z Google Maps
- 14. Jak narysować interaktywną Polilinię na trasie google maps v2 android
- 15. Jak przenieść Android Google Maps API Pozycja kompasu
- 16. Jak włączyć "Google Maps Android API v2" w konsoli programistów
- 17. Android Google Maps v2: Jak dodać znacznik z kodem wieloliniowym?
- 18. Google Maps API directionsService.route różni się od Google Maps Directions
- 19. Google maps infobox - maxWidth
- 20. Google Earth Heat Maps
- 21. Google Maps API DeletedApiProjectMapError
- 22. Ciągnij od dołu Widok jak Google Maps
- 23. Google maps responsive resize
- 24. Android rozwija LinearLayout za pomocą animacji
- 25. Google maps odległość approximation
- 26. Google Maps v3 OverlayView.getProjection()
- 27. Google maps removal control
- 28. Google Maps i DART
- 29. Google Maps Infowindow Pozycja
- 30. Google maps nie v2 wyświetlane
Czy znalazłeś rozwiązanie problemu? Jestem także zainteresowany. Dziękujemy – dor506
@ dor506 nope: | zagra trochę więcej, gdy znajdę trochę wolnego czasu: D – superhrvoje
Czy znalazłeś rozwiązanie? –