Android中的触摸或单击事件ViewPagerIndicator
Posted
技术标签:
【中文标题】Android中的触摸或单击事件ViewPagerIndicator【英文标题】:Touch or Click event ViewPagerIndicator in Android 【发布时间】:2014-04-09 11:42:40 【问题描述】:可能与以下内容重复:
-
Intercepting touch events in ViewPagerIndicator
Disabling & Enabling Paging In ViewPager in android
android: ViewPager and HorizontalScrollVIew
我在我的 android 应用程序中使用ViewPagerIndicator 来滑动动态数量的视图并且它工作正常。
想要什么?当用户点击其中一张幻灯片时,其对应的视图将打开。但我无法覆盖 Pager 上的触摸事件。
活动代码是:
public class MainActivity extends BaseSampleActivity
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mAdapter = new TestFragmentAdapter(getSupportFragmentManager());
mPager = (ViewPager)findViewById(R.id.pager);
mPager.setAdapter(mAdapter);
mPager.setOnTouchListener(new View.OnTouchListener()
@Override
public boolean onTouch(View v, MotionEvent event)
// TODO Auto-generated method stub
System.out.print(event.getAction());//not working
return false;
);
mIndicator = (CirclePageIndicator)findViewById(R.id.indicator);
mIndicator.setViewPager(mPager);
我搜索了很多,但没有找到合适的解决方案。 但没有得到正确而简短的答案
【问题讨论】:
【参考方案1】:我也有同样的问题。首先我创建了一个CustomViewPager
,它扩展了ViewPager
:
并覆盖 onTouch
和 onInterceptTouch
事件:
public class CustomViewPager extends ViewPager
public CustomViewPager(Context context, AttributeSet attrs)
super(context, attrs);
@Override
public boolean onInterceptTouchEvent(MotionEvent event)
return super.onInterceptTouchEvent(event);
@Override
public boolean onTouchEvent(MotionEvent event)
return super.onTountEvent(event);
你的 xml 应该是:
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_
android:layout_
android:layout_weight="7" />
改成
<com.yourpackage.CustomViewPager
android:id="@+id/pager"
android:layout_
android:layout_
android:layout_weight="7" />
点击事件使用GestureDetector
。将MotionEvent
发送到tapGestureDetector。
tapGestureDetector = new GestureDetector(this, new TapGestureListener());
viewPager.setOnTouchListener(new OnTouchListener()
public boolean onTouch(View v, MotionEvent event)
tapGestureDetector.onTouchEvent(event);
return false;
);
如果你使用的是兼容性库,可以将第一行改为:
tapGestureDetector = new GestureDetectorCompat(this, new TapGestureListener());
您可以在 GestureListener 中处理您的事件:
class TapGestureListener extends GestureDetector.SimpleOnGestureListener
@Override
public boolean onSingleTapConfirmed(MotionEvent e)
// Your Code here
【讨论】:
以上是关于Android中的触摸或单击事件ViewPagerIndicator的主要内容,如果未能解决你的问题,请参考以下文章