将一个 viewpager 上的滑动设置为另一个
Make swipes on one viewpager be set to another one
我有 2 个线性布局的视图寻呼机,它们都占用相同数量的屏幕。我想这样做,如果用户在屏幕上的任何地方滑动,那么滑动应该只用于较低的 viewpager。我尝试增加触摸委托,但没有用。
好吧,你正在尝试一些迷幻的东西!我建议为第二个 viewpager 创建一个 CustomViewPager class,它可以有第一个 viewPager 的实例。
public class CustomViewPager extends ViewPager {
private ViewPager firstViewPager;
public CustomViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
this.enabled = true;
}
@Override
public boolean onTouchEvent(MotionEvent event) {
if(firstViewPager!=null){
firstViewPager.onTouchEvent(event);
}
return super.onTouchEvent(event);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
if(firstViewPager!=null){
firstViewPager.onInterceptTouchEvent(event);
}
return super.onInterceptTouchEvent(event);
}
public void setFirstViewPager(ViewPager firstViewPager) {
this.firstViewPager = firstViewPager;
}
}
在这里,您将在第二个 viewpager 的 onTouchEvent
和 onInterceptTouchEvent
中获得的运动事件传递给第一个 viewpager。您还想禁用第一个 viewpager 上的滑动功能,您可以按照 here.
中的描述进行操作
我有 2 个线性布局的视图寻呼机,它们都占用相同数量的屏幕。我想这样做,如果用户在屏幕上的任何地方滑动,那么滑动应该只用于较低的 viewpager。我尝试增加触摸委托,但没有用。
好吧,你正在尝试一些迷幻的东西!我建议为第二个 viewpager 创建一个 CustomViewPager class,它可以有第一个 viewPager 的实例。
public class CustomViewPager extends ViewPager {
private ViewPager firstViewPager;
public CustomViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
this.enabled = true;
}
@Override
public boolean onTouchEvent(MotionEvent event) {
if(firstViewPager!=null){
firstViewPager.onTouchEvent(event);
}
return super.onTouchEvent(event);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
if(firstViewPager!=null){
firstViewPager.onInterceptTouchEvent(event);
}
return super.onInterceptTouchEvent(event);
}
public void setFirstViewPager(ViewPager firstViewPager) {
this.firstViewPager = firstViewPager;
}
}
在这里,您将在第二个 viewpager 的 onTouchEvent
和 onInterceptTouchEvent
中获得的运动事件传递给第一个 viewpager。您还想禁用第一个 viewpager 上的滑动功能,您可以按照 here.