gpt4 book ai didi

android - Android 中的触摸或单击事件 ViewPagerIndicator

转载 作者:行者123 更新时间:2023-11-29 01:43:23 25 4
gpt4 key购买 nike

可以重复:

  1. Intercepting touch events in ViewPagerIndicator
  2. Disabling & Enabling Paging In ViewPager in Android
  3. android: ViewPager and HorizontalScrollVIew

我正在使用 ViewPagerIndicator在我的 android 应用程序中滑动动态 View 数量并且它工作正常。

想要什么?当用户点击其中一张幻灯片时,其对应的 View 将打开。但我无法覆盖 Pager 上的触摸事件。

Activity 代码是:

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);
}
}

我搜索了很多,但没有找到合适的解决方案。却没有得到恰当而简短的回答

最佳答案

我也遇到了同样的问题。首先,我创建了一个 CustomViewPager,它扩展了 ViewPager:

并覆盖 onTouchonInterceptTouch 事件:

    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_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" />

点击事件使用 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 - Android 中的触摸或单击事件 ViewPagerIndicator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22961427/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com