【发布时间】:2017-06-12 06:18:26
【问题描述】:
我试图不让BottomSheet 填充整个屏幕,但在展开时在上方留出一些空间。这是我的 onExpand 填充整个屏幕的代码。
bottomSheetBehavior = BottomSheetBehavior.from(bottomLayout);
bottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
bottomSheetBehavior.setBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() {
@Override
public void onStateChanged(@NonNull View bottomSheet, int newState) {
switch (newState) {
case BottomSheetBehavior.STATE_DRAGGING:
Log.i("BottomSheetCallback", "BottomSheetBehavior.STATE_DRAGGING");
break;
case BottomSheetBehavior.STATE_SETTLING:
Log.i("BottomSheetCallback", "BottomSheetBehavior.STATE_SETTLING");
break;
case BottomSheetBehavior.STATE_EXPANDED:
Log.i("BottomSheetCallback", "BottomSheetBehavior.STATE_EXPANDED");
break;
case BottomSheetBehavior.STATE_COLLAPSED:
Log.i("BottomSheetCallback", "BottomSheetBehavior.STATE_COLLAPSED");
break;
case BottomSheetBehavior.STATE_HIDDEN:
Log.i("BottomSheetCallback", "BottomSheetBehavior.STATE_HIDDEN");
break;
}
}
@Override
public void onSlide(@NonNull View bottomSheet, float slideOffset) {
Log.i("BottomSheetCallback", "slideOffset: " + slideOffset);
boolean drawer = getSupportFragmentManager().getBackStackEntryCount() == 0;
ObjectAnimator.ofFloat(drawerArrow, "progress", drawer ? 0 : 1).start();
}
});
bottomLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.v(TAG, "ONCLickListner");
if (bottomSheetBehavior.getState() == BottomSheetBehavior.STATE_COLLAPSED) {
Log.v(TAG,"state expand");
bottomSheetBehavior.setState(BottomSheetBehavior.STATE_EXPANDED);
} else {
Log.v(TAG,"state collapse");
bottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
}
}
});
您能否解决我的问题并提出一种方法,使底页不占用整个屏幕,而是在展开时在上方留出一些空间。 谢谢
【问题讨论】:
-
在 xml 或 java 文件中设置 peekheight
-
我相信 peekHeight 适用于 Sheet 的底部高度而不是上面的间距
标签: android android-layout material-design bottom-sheet