我在我的代码中实现了视图寻呼机,我在视图寻呼机上放置了点击式监听器,但是我的点击式监听器无效,我将发布我的代码
viewpager.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
Log.i("***","***");
Toast.makeText(getActivity(), "XXXX", Toast.LENGTH_SHORT).show();
}
});
答案 0 :(得分:9)
我实施了自定义ViewPager
:
public class ClickableViewPager extends ViewPager {
private OnClickListener mOnClickListener;
public ClickableViewPager(Context context) {
super(context);
setup();
}
public ClickableViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
setup();
}
private void setup() {
final GestureDetector tapGestureDetector = new GestureDetector(getContext(), new TapGestureListener());
setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
tapGestureDetector.onTouchEvent(event);
return false;
}
});
}
public void setOnViewPagerClickListener(OnClickListener onClickListener) {
mOnClickListener = onClickListener;
}
public interface OnClickListener {
void onViewPagerClick(ViewPager viewPager);
}
private class TapGestureListener extends GestureDetector.SimpleOnGestureListener {
@Override
public boolean onSingleTapConfirmed(MotionEvent e) {
if(mOnClickListener != null) {
mOnClickListener.onViewPagerClick(ClickableViewPager.this);
}
return true;
}
}
}
示例如何实现onClickListener
:
ClickableViewPager viewPager = (ClickableViewPager) findViewById(R.id.viewPager);
mViewPager.setOnViewPagerClickListener(new ClickableViewPager.OnClickListener() {
@Override
public void onViewPagerClick(ViewPager viewPager) {
//yourCode
}
});
答案 1 :(得分:7)
在 ViewPager 项目中使用 clicklistener 。这是行不通的,因为ViewPager的Child正在拦截父节点的事件(即ViewPager)。 E.G如果您使用PagerAdapter在ViewPager中添加ImageView,则使用ImageView单击使其变得简单
答案 2 :(得分:0)
ViewPager中没有onClick侦听器,您可以使用Recyclerview而不是ViewPager使用相同的效果,如下所示
<android.support.v7.widget.RecyclerView
android:id="@+id/recycler_view_scroll_page"
android:layout_width="wrap_content"
android:layout_height="250dp"
android:orientation="horizontal"
app:layoutManager="android.support.v7.widget.LinearLayoutManager"/>
将Recyclerview用作水平,然后您可以滚动它并获取点击事件。请注意使用RecyclerView.Adapter