假设我在viewpager中有5个片段。让我们说片段A,B,C,D,E。
我在片段A上有一个按钮转到片段B.当我按下这个按钮时,viewpager滚动到片段B.不知怎的,我将片段A的持续时间控制为B.现在的事情是,我有一个可滚动的容器片段B.我想在A到B之间的滚动期间滚动该容器。现在我在从片段A到B之后进行滚动。我希望在此过渡之间发生这种情况。
在第一个片段中:
@Override
public void onClick(View view) {
if(view.getId() == bottomLayout.getId())
{
MainActivity.pager.setCurrentItem(1);
}
}
它会将我的寻呼机位置0改为1.现在它的改变。我控制了viewpager的滚动速度。在第二个片段的顶部,我有一个ScrollView,我需要在片段改变时对此scrollview执行滚动,而不是在更改后。
答案 0 :(得分:0)
要为FragmentB的视图设置动画,您需要在调用viewPager.setCurrentItem()
后立即告诉它开始动画。
在FragmentA的点击监听器中,您将要求父Activity更改ViewPager项(请参阅Communicating with the Activity以了解应如何完成此操作):
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
activityCallback.setViewPagerItem(POSITION_OF_FRAGMENT_B);
}
});
在ViewPager
所在的活动中,您将写下:
public void setViewPagerItem(int position) {
viewPager.setCurrentItem(position);
// following asks the fragmentB to start its animation on its view.
if (position == POSITION_OF_FRAGMENT_B) {
fragmentB.startYourAnimation();
}
}
在FragmentB中,您添加了一个方法:
public void startYourAnimation() {
// write your code to animate your ListView or whatever you want to
// animate inside the FragmentB
}
备注:强>
viewPager.setOffscreenPageLimit()
,否则如果您从FragmentA
或FragmentC
执行此操作,则已存在FragmentB的实例,答案 1 :(得分:-1)
不可能这样做,因为任何可滚动的视图,如listview或recyclerview,只有在用户可见且仅在滚动时才创建项目,因此如果该片段不可见,则无法滚动任何儿童可滚动视图。