触摸或点击事件ViewPagerIndicator Android中 [英] Touch or Click event ViewPagerIndicator in Android
问题描述
可能是重复的:
- <一个href="http://stackoverflow.com/questions/17370729/intercepting-touch-events-in-viewpagerindicator">Intercepting在ViewPagerIndicator触摸事件
- <一个href="http://stackoverflow.com/questions/8134336/disabling-enabling-paging-in-viewpager-in-android">Disabling &放大器;使分页ViewPager在Android的
- <一个href="http://stackoverflow.com/questions/6920137/android-viewpager-and-horizontalscrollview">android: ViewPager和HorizontalScrollVIew
- Intercepting touch events in ViewPagerIndicator
- Disabling & Enabling Paging In ViewPager in Android
- android: ViewPager and HorizontalScrollVIew
我使用 ViewPagerIndicator 在我的Android应用程序的刷卡来看动态数量和它的工作的罚款。
I am using ViewPagerIndicator in my android app for swiping dynamic number of view and its working fine.
什么是希望?:当用户在幻灯片上其对应的视图将打开的点击。但我无法覆盖触摸事件上的寻呼机
What is want? When user click on one of the slide its corresponding view will open. But i am unable to override touch event on Pager.
活动code是:
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);
}
}
我寻觅了很多,但没有找到妥善的解决办法。 但没有得到适当的和简单的答案
I have searched a lot but didn't found proper solution. But haven't got proper and brief answer
推荐答案
我也有同样的问题。首先,我创建了一个 CustomViewPager
,它扩展了 ViewPager
:
I also had a same issue. First I created a CustomViewPager
, which extends 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应该是:
Your xml should be:
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="7" />
将其更改为
<com.yourpackage.CustomViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="7" />
有关click事件使用 GestureDetector
。发送 MotionEvent
的tapGestureDetector。
For click event use GestureDetector
. Sending MotionEvent
to the tapGestureDetector.
tapGestureDetector = new GestureDetector(this, new TapGestureListener());
viewPager.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
tapGestureDetector.onTouchEvent(event);
return false;
}
});
据您正在使用兼容性库,就可以在第一行更改为:
It you are using the compatibility library, you can change the first line to:
tapGestureDetector = new GestureDetectorCompat(this, new TapGestureListener());
您可以处理在GestureListener的事件:
You can handle your Event in the GestureListener:
class TapGestureListener extends GestureDetector.SimpleOnGestureListener{
@Override
public boolean onSingleTapConfirmed(MotionEvent e) {
// Your Code here
}
}
这篇关于触摸或点击事件ViewPagerIndicator Android中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!