Reputation: 499
This is my code for viewPager . I want to disable user to swipe between viewPager but be able to click on it .
This is my code ;
vp= (ViewPager)header.findViewById(R.id.pager);
vp.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
return true;
}
});
vp.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent in=new Intent (FistActiivty.this,List.class);
in.putExtra("for","latest");
startActivity(in);
}
});
it disable swipe by user but onclicklistener is not working after that .
How can I make onclicklistener works again but disable swipe by user ?
Upvotes: 1
Views: 1517
Reputation: 2641
You need to create custom class that extends ViewPager like this
MyViewPager.java
public class MyViewPager extends ViewPager
{
public MyViewPager(Context context)
{
super(context);
}
public MyViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent arg0) {
// Never allow swiping to switch between pages
return false;
}
@Override
public boolean onTouchEvent(MotionEvent event) {
// Never allow swiping to switch between pages
return false;
}
}
Secondly, you need to make one change in your xml where you have defined android.support.v4.view.ViewPager
Like this
<YourProjectPackageName.MyViewPager
android:id="@+id/viewPager"
android:layout_width="fill_parent"
android:layout_height="match_parent" />
Upvotes: 2
Reputation: 15668
I am using this. You need to call viewPager.setPagingEnabled(false);
import android.content.Context;
import android.support.v4.view.ViewPager;
import android.util.AttributeSet;
import android.view.MotionEvent;
/**
* Created by ksenchy on 2.4.2015.
*/
public class CustomViewPager extends ViewPager {
private boolean enabled = true;
public CustomViewPager(Context context) {
super(context);
}
public CustomViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
return !enabled || super.onTouchEvent(event);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
return enabled && super.onInterceptTouchEvent(event);
}
public void setPagingEnabled(boolean enabled) {
this.enabled = enabled;
}
}
Upvotes: 0
Reputation: 1000
Create custom viewpager class:
public class CustomViewPager extends ViewPager {
private boolean enabled;
public CustomViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
this.enabled = true;
}
@Override
public boolean onTouchEvent(MotionEvent event) {
if (this.enabled) {
return super.onTouchEvent(event);
}
return false;
}
@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
if (this.enabled) {
return super.onInterceptTouchEvent(event);
}
return false;
}
public void setPagingEnabled(boolean enabled) {
this.enabled = enabled;
}
}
and use it i your xml file:
<mypackage.CustomViewPager
android:id="@+id/myViewPager"
android:layout_height="match_parent"
android:layout_width="match_parent" />
Upvotes: 0