2017-11-27 29 views
0

viewmodelをボトムシートにバインドする方法を理解しようとしています。これは、ボトムシートをビューモデルの観測可能なフィールドを使用して展開、折りたたみ、非表示にする方法です。viewmodelをボトムシートにバインドする方法

ありがとうございました!

答えて

1

カスタムBindingAdapterを使用してください。あなたのビューにXMLでそれをバインド

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

<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> 

とのViewModelに状態を変更します。私の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

ありがとうございます。私はこれを試してみて、私が見つけたものと一緒にバック/アップデートを報告します。 peekheightも更新しようとしています。 bottombodyheetbehaviorstateの名前空間は何ですか? – dazza5000

+0

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

+0

app/android/app:behavior_hideable android:idなどの名前空間nestedscrollview要素で定義されたbottomSheetBehaviorState属性に名前空間がありません。 – dazza5000

関連する問題