Android viewpager选择了两个选项卡(疯狂)
我创建了一个viewpager和三个选项卡。 我有两个问题Android viewpager选择了两个选项卡(疯狂),android,android-viewpager,android-tablayout,Android,Android Viewpager,Android Tablayout,我创建了一个viewpager和三个选项卡。 我有两个问题 在viewpager和TableLayout中启动活动后,在我的适配器中自动选择getItem方法中的第一个选项卡(通常)和第二个选项卡,并显示第一个选项卡片段 当我选择第三个选项卡时,viewpager遇到了问题。已选择的第二个选项卡和第三个选项卡,以及第三个选项卡不能滚动和。我不明白 其他资料: -我使用这个库在三个片段中滚动: ksoichiro:android observablescrollview:1.5.0 -从Obser
AdapterPager adapter = new AdapterPager(getSupportFragmentManager());
adapter.myAddFragment(new FragmentComment());
adapter.myAddFragment(new FragmentProduct());
adapter.myAddFragment(new FragmentInfo());
vpgCampPage.setAdapter(adapter);
tabCampPage.setupWithViewPager(vpgCampPage);
tabCampPage.getTabAt(0).setIcon(R.mipmap.info_message);
tabCampPage.getTabAt(1).setIcon(R.mipmap.info_product);
tabCampPage.getTabAt(2).setIcon(R.mipmap.info_desc);
适配器管理器:
public class AdapterPager extends FragmentPagerAdapter {
private List<Fragment> fragments = new ArrayList<>();
public AdapterPager(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
return fragments.get(position);
}
@Override
public int getCount() {
return fragments.size();
}
public void myAddFragment(Fragment fragment) {
fragments.add(fragment);
}
}
和活动父级中标题滚动的动画:
@Override
public void onUpOrCancelMotionEvent(ScrollState scrollState) {
if (scrollState == ScrollState.UP) {
if (toolbarIsShown()) { // TODO Not implemented
hideToolbar(); // TODO Not implemented
}
} else if (scrollState == ScrollState.DOWN) {
if (toolbarIsHidden()) { // TODO Not implemented
showToolbar(); // TODO Not implemented
}
}
}
private boolean toolbarIsShown() {
return ViewHelper.getTranslationY(layCampPageHeader) == 0;
}
private boolean toolbarIsHidden() {
return ViewHelper.getTranslationY(layCampPageHeader) - sizeTab == -layCampPageHeader.getHeight();
}
private void showToolbar() {
moveToolbar(0);
}
private void hideToolbar() {
moveToolbar(-layCampPageHeader.getHeight() + sizeTab);
}
private void moveToolbar(float toTranslationY) {
ValueAnimator animator = ValueAnimator.ofFloat(ViewHelper.getTranslationY(layCampPageHeader), toTranslationY).setDuration(300);
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
float translationY = (float) animation.getAnimatedValue();
ViewHelper.setTranslationY(layCampPageHeader, translationY);
ViewHelper.setTranslationY((View) vpgCampPage, translationY);
FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams) ((View) vpgCampPage).getLayoutParams();
lp.height = (int) -translationY + /*getScreenHeight()*/1776 - lp.topMargin;
((View) vpgCampPage).requestLayout();
}
});
animator.start();
}
什么是
vpgCampPage
?这是我的viewpager的名称。目前我删除了此库,并且不使用它。AllFragments.ViewPagerAdapter适配器=新建AllFragments.ViewPagerAdapter(getFragmentManager())
然后将其添加到末尾vpgCampPage.setAdapter(adapter);选项卡CampPage.setupWithViewPager(vpgCampPage)试试这个,让我知道你试过了吗?。。
@Override
public void onUpOrCancelMotionEvent(ScrollState scrollState) {
if (scrollState == ScrollState.UP) {
if (toolbarIsShown()) { // TODO Not implemented
hideToolbar(); // TODO Not implemented
}
} else if (scrollState == ScrollState.DOWN) {
if (toolbarIsHidden()) { // TODO Not implemented
showToolbar(); // TODO Not implemented
}
}
}
private boolean toolbarIsShown() {
return ViewHelper.getTranslationY(layCampPageHeader) == 0;
}
private boolean toolbarIsHidden() {
return ViewHelper.getTranslationY(layCampPageHeader) - sizeTab == -layCampPageHeader.getHeight();
}
private void showToolbar() {
moveToolbar(0);
}
private void hideToolbar() {
moveToolbar(-layCampPageHeader.getHeight() + sizeTab);
}
private void moveToolbar(float toTranslationY) {
ValueAnimator animator = ValueAnimator.ofFloat(ViewHelper.getTranslationY(layCampPageHeader), toTranslationY).setDuration(300);
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
float translationY = (float) animation.getAnimatedValue();
ViewHelper.setTranslationY(layCampPageHeader, translationY);
ViewHelper.setTranslationY((View) vpgCampPage, translationY);
FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams) ((View) vpgCampPage).getLayoutParams();
lp.height = (int) -translationY + /*getScreenHeight()*/1776 - lp.topMargin;
((View) vpgCampPage).requestLayout();
}
});
animator.start();
}