显示在ViewPager多页的,不正确的位置 [英] Display of Multiple pages in ViewPager, Incorrect Position
问题描述
我想实现戴夫·史密斯的PagerContainer展现在我的ViewPager多个页面。我已经实现了在点击监听器来显示页码,但是当我点击页面左侧的点击2项消息显示(项目0是正确的)。如果我点击中间和右边的页面,正确的消息显示,项目1和项目2分别。我还附有图片说明问题。我该如何解决这个问题?先谢谢了。
在code代码片段如下:
@覆盖
公共对象instantiateItem(ViewGroup中的容器,最终诠释位置){
TextView的视图=新的TextView(PagerActivity.this);
view.setText(项目+位置);
view.setGravity(Gravity.CENTER);
view.setBackgroundColor(Color.argb(255位* 50位* 10,位置* 50));
view.setOnClickListener(新View.OnClickListener(){
公共无效的onClick(视图v){
Toast.makeText(PagerActivity.this,点击物品+将String.valueOf(位置),1000).show();
}
});
container.addView(视图);
返回查看;
}
pager.setOffscreenPageLimit(adapter.getCount());
pager.setPageMargin(15);
pager.setClipChildren(假);
直升机,
在PagerContainer.java文件中更改此。 我认为这将有助于:
@覆盖
公共布尔的onTouchEvent(MotionEvent EV){
//我们捕捉尚未被ViewPager处理的任何接触
//实现从寻呼机范围之外触摸滚动。
开关(ev.getAction()){
案例MotionEvent.ACTION_DOWN:
mInitialTouch.x =(int)的ev.getX();
mInitialTouch.y =(int)的ev.getY();
默认:
如果(mInitialTouch.x< mCenter.x){
ev.offsetLocation( - (mCenter.x - mInitialTouch.x),mCenter.y - mInitialTouch.y);
} 其他 {
ev.offsetLocation(mCenter.x - mInitialTouch.x,mCenter.y - mInitialTouch.y);
}
打破;
}
返回mPager.dispatchTouchEvent(EV);
}
I am trying to implement Dave Smith's PagerContainer to show multiple pages in my ViewPager. I have implemented an on-click listener to display the page numbers, but when I click on the left page, "clicked on item 2" message is shown (item 0 would be correct). If I click on the middle and the right pages, correct messages are displayed, "item 1" and "item 2" respectively. I've also attached an image to describe the problem. How can I fix this? Thanks in advance.
The code snippet is given below:
@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,
Change this in the PagerContainer.java file. I think this will help:
@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);
}
这篇关于显示在ViewPager多页的,不正确的位置的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!