我正在尝试为BottomSheet
设置隐藏状态,但它不起作用。问题是什么?
bottomBar = BottomSheetBehavior.from(findViewById(R.id.bottom_bar));
bottomBar.setState(BottomSheetBehavior.STATE_HIDDEN);
答案 0 :(得分:24)
请记住在活动/片段
的开头隐藏底部工作表时添加此项bottomSheetBehavior =BottomSheetBehavior.from(bottom_sheet_view_here);
bottomSheetBehavior.setHideable(true);//Important to add
bottomSheetBehavior.setState(BottomSheetBehavior.STATE_HIDDEN);
答案 1 :(得分:4)
mBottomSheetBehaviour.setPeekHeight(0);
使用它,它会隐藏。
答案 2 :(得分:3)
尝试以下方法:
LinearLayout bottomSheetViewgroup
= (LinearLayout) findViewById(R.id.bottom_sheet);
BottomSheetBehavior bottomSheetBehavior =
BottomSheetBehavior.from(bottomSheetViewgroup);
然后使用
bottomSheetBehavior.setState(BottomSheetBehavior.STATE_HIDDEN);
答案 3 :(得分:1)
确保在Activity的生命周期中不要过早地执行此操作。如果您需要在onCreate
或类似内容中进行此操作,请尝试将其放入您发布到视图的Runnable
中,如下所示:
getWindow().getDecorView().post(new Runnable() {
@Override
public void run() {
bottomBar = BottomSheetBehavior.from(findViewById(R.id.bottom_bar));
bottomBar.setState(BottomSheetBehavior.STATE_HIDDEN);
}
});
这不是最干净的解决方案,但它有时是不可避免的。
答案 4 :(得分:1)
bottomsheetbehavior.setPeekHeight(0, true);
用小动画隐藏:)
或
bottomSheet.animate()
.translationYBy(bottomSheetBehavior.getPeekHeight());
答案 5 :(得分:0)
尝试BottomSheetBehaviour.STATE_COLLAPSED
bottomBar = BottomSheetBehavior.from(findViewById(R.id.bottom_bar));
bottomBar.setState(BottomSheetBehavior.STATE_COLLAPSED);
答案 6 :(得分:0)
如果你使用像Tabbed Activity这样的东西,你可以隐藏你的片段中的bottomsheetlayout。
我认为这是可能的,因为片段视图是在活动视图之后创建的。
class "activity"
public void hideBottomSheet(){
sheetBehavior.setState(BottomSheetBehavior.STATE_HIDDEN);
}
class "fragment"
onCreateView()
((YourActivity.class)getActivity()).hideBottomSheet();
答案 7 :(得分:0)
另一种方式 -
这样你就不需要import configparser
:
Fragments