2017-02-17 4 views
0

私はボトムシート付きの画面を持っていますが、アクティビティ間でトランジションアニメーションを使用するには、ユーザーが押し戻されたときにボトムシートを折りたたむ必要があります。 bottomsheetがダウンして半分だけの方法ですしながら、活動としてそのdoesntの仕事は戻っしかし、私はこの状態が変更された後のAndroidボトムシート

@Override 
public void onBackPressed(){ 
    if (mBottomSheetBehavior.getState()==BottomSheetBehavior.STATE_COLLAPSED){ 
     super.onBackPressed(); 
    }else{ 
     mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED); 
     super.onBackPressed(); 
    } 
    mShowingBack = false; 
} 

を試してみました。 BottomSheetBehavior.STATE_COLLAPSEDはすべてBottomSheetを隠さない

答えて

1

、それはちょうどあなたがXMLでsetPeekHeight()またはbehavior_peekHeightで設定何にビューの高さを設定します:)しかし、脇にそれを置くことは...あなたはスーパーを呼び出す必要があります。

BottomSheetBehavior behavior = BottomSheetBehavior.from(mBottomSheetBehavior); 
behavior.setBottomSheetCallback(new BottomSheetCallback() { 
    @Override 
    public void onStateChanged(@NonNull View bottomSheet, int newState) { 
    if (newState == BottomSheetBehavior.STATE_COLLAPSED && mIsCollapsedFromBackPress){ 
     mIsCollapsedFromBackPress = false; 
     super.onBackPressed(); 
    } 
    } 

    @Override 
    public void onSlide(@NonNull View bottomSheet, float slideOffset) { 
    // React to dragging events 
    } 
}); 

とあなたのbackPressed()メソッドは次のようになります:

@Override 
public void onBackPressed(){ 
    mIsCollapsedFromBackPress = true; 
    mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED); 
} 
+0

問題があり、下のことであるBottomSheetの状態はこのように、STATE_COLLAPSEDときonBackPressed()BottomSheetBehaviorCallback内部他の理由でシートが崩壊するアクティビティが変化していて、ボトムシートがコルプされるたびにアクティビティが変更されるのをやめてください。 –

+0

その場合は、... "mIsCollapsedOnBackPressed"のようなローカルブール値を使用してonBackPressedでtrueにしてからmake BottomSheetBehaviorの内部ではfalseです。「if」...これは私が考えることができる最も速い解決策です。 –

+0

私はちょうど答えを編集した、私はそれがあなたのケースで動作するはずだと思う:) –

関連する問題