int previousBottomSheetState = BottomSheetBehavior.STATE_COLLAPSED
bottom_sheet.setBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() {
@Override
public void onStateChanged(@NonNull View bottomSheet, int newState) {
//to prevent rotation of the arrow if the users swipes down or up again, even when its already collapsed or expanded.
if (newState == BottomSheetBehavior.STATE_EXPANDED && newState != previousBottomSheetState) {
//update my bottomsheet state.
previousBottomSheetState = BottomSheetBehavior.STATE_EXPANDED;
(yourView).animate().rotationXBy(180).start();
} else if (newState == BottomSheetBehavior.STATE_COLLAPSED && newState != previousBottomSheetState) {
previousBottomSheetState = BottomSheetBehavior.STATE_COLLAPSED;
(yourView).animate().rotationXBy(180).start();
}
}
@Override
public void onSlide(@NonNull View bottomSheet, float slideOffset) {
}
});
2 回答
萨钦的答案很棒 .
这是另一种解决方案,通过保持底部纸张的先前状态 .
使用
BottomSheetCallback
可以实现 . 您只需要通过回调提供的偏移来旋转视图 . 例如 :-