如何使用viewmodel设置BottomSheetBehavior,我想执行3个任务:1)点击按钮展开2)如果在单击按钮后展开,则会折叠
所以有人可以帮助我如何在viewmodel中具有BottomSheetBehavior状态的视图模型中进行设置吗?
首先findviewbyid您的视图应该是最底下的!然后实例化行为,然后进入底表行为状态!
CoordinatorLayout layout=findViewById(R.id.bottom_sheet_root_view);
BottomSheetbehavior btmBehaviour = BottomSheetBehavior.from(layout);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (btmBehaviour.getState()==BottomSheetBehavior.STATE_EXPANDED){
btmBehaviour.setState(BottomSheetBehavior.STATE_COLLAPSED);
}else {
btmBehaviour.setState(BottomSheetBehavior.STATE_EXPANDED);
}
}
});
您可以使用LiveData控制底纸状态
在ViewModel
中
val isBottomSheetExpanded = MutableLiveData<Boolean>()
fun expand() {
isBottomSheetExpanded.value = true
}
fun collapse() {
isBottomSheetExpanded.value = false
}
在主持bottomSheet的Activity
中
val bottomSheetBehavior = findViewById(R.id.bottom_sheet_root_view)
activityViewModel.isBottomSheetExpanded.observe(this) { isExpanded ->
if (isExpanded) {
bottomSheetBehavior?.state = BottomSheetBehavior.STATE_EXPANDED
} else {
bottomSheetBehavior?.state = BottomSheetBehavior.STATE_COLLAPSED
}
}
在Fragments
中
collapseButton.setOnClickListener {
activityViewModel.collapse()
}
expandButton.setOnClickListener {
activityViewModel.expand()
}