【发布时间】:2018-04-14 03:15:34
【问题描述】:
我正在使用ViewPager 控件。我在每一页都有一张图片和许多textviews。我使用左右填充以及page margin 在显示所选页面时部分显示下一页和上一页。
当ViewPager 是scrolling 时,我想一次显示多个页面。一旦滚动停止,希望仅在中心显示所选页面并部分显示前一页和后一页(就像滚动开始之前一样)。
我试图通过在ViewPager 为scrolling 时增加“左”和“右”填充并在滚动停止时重置padding 来实现这一点。增加填充效果很好,我可以一次看到多个页面。但是将填充重置为原始值不起作用。填充重置为原始值后,ViewPager 显示意外对齐。
我也尝试设置负边距。仍在重置边距未按预期工作。
这是ViewPager 的定义
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:paddingTop="20dp"
android:clipToPadding="false"
android:paddingLeft="30dp"
android:paddingRight="30dp"
android:layout_width="wrap_content"
android:layout_height="160dp"/>
viewPager.setPageMargin(CAROUSEL_PAGE_MARGIN);
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
if(getContext() != null) {
int paddingLeft = (int) getResources().getDimension(R.dimen.abstract_30dp);
int paddingRight = (int) getResources().getDimension(R.dimen.abstract_30dp);
int paddingTop = (int) getResources().getDimension(R.dimen.abstract_20dp);
int paddingBottom = 0;
viewPager.setPaddingRelative(paddingLeft, paddingTop, paddingRight, paddingBottom);
}
}
@Override
public void onPageScrollStateChanged(int state) {
if (state == ViewPager.SCROLL_STATE_DRAGGING) {
if (getContext() != null) {
int paddingLeft = (int) getResources().getDimension(R.dimen.abstract_100dp);
int paddingRight = (int) getResources().getDimension(R.dimen.abstract_100dp);
int paddingTop = (int) getResources().getDimension(R.dimen.abstract_20dp);
int paddingBottom = 0;
viewPager.setPaddingRelative(paddingLeft, paddingTop, paddingRight, paddingBottom);
}
}
if (state == ViewPager.SCROLL_STATE_IDLE) {
if (getContext() != null) {
int paddingLeft = (int) getResources().getDimension(R.dimen.abstract_30dp);
int paddingRight = (int) getResources().getDimension(R.dimen.abstract_30dp);
int paddingTop = (int) getResources().getDimension(R.dimen.abstract_20dp);
int paddingBottom = 0;
viewPager.setPaddingRelative(paddingLeft, paddingTop, paddingRight, paddingBottom);
}
}
}
}
});
这是我需要的,
【问题讨论】:
-
您能否向我们展示您想要实现的目标的参考图片?
-
如果我没听错,你可以看看this
-
您可以在滚动时使用动画缩小 viewPager 内的所有片段。 developer.android.com/training/animation/…
-
@nimi0112 感谢您的回复。我只是添加参考图像。请检查