我在Fragment's
内有3个viewpager
页面。在Fragment
中包含BottomSheetBehaviour
。我设置的默认状态是STATE_EXPANDED
。
在每个页面中,我都会拖动面板使其崩溃。这个场景:
在第1页:将面板拖到底部(状态更改为STATE_COLLAPSE
)
在第2页:将面板拖到底部(状态更改为STATE_COLLAPSE
)
在第3页:将面板拖到底部(状态更改为STATE_COLLAPSE
)
问题
当我返回第1页时,面板会自行更改为扩展(STATE_EXPANDED
)。它应该仍然是{strong>第1页中的STATE_COLLAPSE
。
相反,如果我从第1页转到第3页,第3页的面板将会启动(STATE_EXPANDED
)自我。
所以我认为小组每两页就会自我升级,
我的问题是:从我上面的问题开始,在我自己拖拽之前如何让面板仍然崩溃(STATE_COLLAPSE
)?
这是我目前的代码:
private void initListenerDragging(){
ivButtonUpDown.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
bottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
}
});
bottomSheetBehavior.setBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() {
@Override
public void onStateChanged( View bottomSheet, int newState) {
if(newState==BottomSheetBehavior.STATE_EXPANDED){
ivButtonUpDown.setImageResource(R.drawable.ic_1491218023_double_arrow_bottom);
ivButtonUpDown.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
bottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
}
});
}else if(newState==BottomSheetBehavior.STATE_COLLAPSED){
ivButtonUpDown.setImageResource(R.drawable.ic_1491217689_double_arrow_top);
ivButtonUpDown.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
bottomSheetBehavior.setState(BottomSheetBehavior.STATE_EXPANDED);
}
});
}
}
@Override
public void onSlide( View bottomSheet, float slideOffset) {
}
});
}
答案 0 :(得分:1)
默认情况下,viepager只加载一个片段,该片段位于当前片段的每一侧。要解决这个问题,您可以通过简单地将其加载来手动设置要加载的片段数量
viewPager.setOffscreenPageLimit(2);
此处2
可根据您的需要进行更改
答案 1 :(得分:0)
视图寻呼机将当前片段左侧或右侧的片段保留在内存中。这意味着当您在第一个片段中时,只有第二个片段在内存中,第三个片段仅在您向右滑动时创建。
当你在第三个片段时,同样的事情发生,只有第二个片段在内存中(紧邻它的那个,而不是第一个片段)。只有向左滑动时,才会重新创建第一个片段并将其带入内存。