我正在尝试实现 Dave Smith 的 PagerContainer 以在我的 ViewPager 中显示多个页面。我已经实现了一个点击监听器来显示页码,但是当我单击左侧页面时,会显示“单击项目 2”消息(项目 0 是正确的)。如果我单击中间和右侧页面,则会显示正确的消息,分别为“项目 1”和“项目 2”。我还附上了一张图片来描述问题。我怎样才能解决这个问题?提前致谢。
代码片段如下:
@Override
public Object instantiateItem(ViewGroup container, final int position) {
TextView view = new TextView(PagerActivity.this);
view.setText("Item "+position);
view.setGravity(Gravity.CENTER);
view.setBackgroundColor(Color.argb(255, position * 50, position * 10, position * 50));
view.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Toast.makeText(PagerActivity.this, "clicked on Item " + String.valueOf(position), 1000).show();
}
});
container.addView(view);
return view;
}
pager.setOffscreenPageLimit(adapter.getCount());
pager.setPageMargin(15);
pager.setClipChildren(false);
Helo,
在 PagerContainer.java 文件中更改此设置。
我认为这会有所帮助:
@Override
public boolean onTouchEvent(MotionEvent ev) {
// We capture any touches not already handled by the ViewPager
// to implement scrolling from a touch outside the pager bounds.
switch (ev.getAction()) {
case MotionEvent.ACTION_DOWN:
mInitialTouch.x = (int) ev.getX();
mInitialTouch.y = (int) ev.getY();
default:
if (mInitialTouch.x < mCenter.x) {
ev.offsetLocation(-(mCenter.x - mInitialTouch.x), mCenter.y - mInitialTouch.y);
} else {
ev.offsetLocation(mCenter.x - mInitialTouch.x, mCenter.y - mInitialTouch.y);
}
break;
}
return mPager.dispatchTouchEvent(ev);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)