2017-11-27 4 views

Antwort

1

Sie sollten benutzerdefinierte BindingAdapter verwenden.

@BindingAdapter("bottomSheetBehaviorState") 
public static void setState(View v, int bottomSheetBehaviorState) { 
    BottomSheetBehavior<View> viewBottomSheetBehavior = BottomSheetBehavior.from(v); 
    viewBottomSheetBehavior.setState(bottomSheetBehaviorState); 
} 

Bind es in XML zu Ihrer Ansicht:

<layout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto"> 
(...) 
     <android.support.v4.widget.NestedScrollView 
      android:id="@+id/group_bottom_sheet" 
      bottomSheetBehaviorState="@{viewModel.bottomSheetBehaviorState}" 
      android:layout_width="match_parent" 
      android:layout_height="250dp" 
      android:background="@android:color/holo_blue_bright" 
      app:behavior_hideable="true" 
      app:behavior_peekHeight="50dp" 
      app:layout_behavior="android.support.design.widget.BottomSheetBehavior"/> 


(...) 
</layout> 

und Staat in Ansichtsmodell ändern. Verwandter Code von meinem ViewModel:

public final ObservableInt bottomSheetBehaviorState = new ObservableInt(BottomSheetBehavior.STATE_HIDDEN); 


@Override 
public void onAction(boolean show){ 
    bottomSheetBehaviorState.set(show? BottomSheetBehavior.STATE_COLLAPSED : BottomSheetBehavior.STATE_HIDDEN); 
} 
+0

Vielen Dank. Ich werde dies versuchen und berichten/aktualisieren mit allem, was ich finde. Versucht, Peekheight zu aktualisieren. Was ist der Namensraum für Bottom Sheet Behaviorstate? – dazza5000

+0

Alle Staaten sind hier: https://developer.android.com/reference/android/support/design/widget/BottomSheetBehavior.html#STATE_COLLAPSED – Kriczer

+0

Der Namespace wie in app/android/app: behavior_hideable android: id etc ... Das im Element nestedcrollview definierte Attribut bottomSheetBehaviorState hat keinen Namespace – dazza5000

Verwandte Themen