自定义ViewPager,避免左右滑动时与水平滑动控件冲突

import android.content.Context;import android.support.v4.view.ViewPager;import android.util.AttributeSet;import android.view.MotionEvent;import android.view.View;
public class CanScrollViewPager extends ViewPager {  private boolean mNoScroll = false;//标记不允许左右滚动

  /**   * @param context   * @param attrs   */  public CanScrollViewPager(Context context, AttributeSet attrs) {    super(context, attrs);  }

  /**   * @param context   */  public CanScrollViewPager(Context context) {    super(context);  }

  @Override  protected boolean canScroll(View v, boolean checkV, int dx, int x, int y) {    if (v != this && (v instanceof PageWebView || v instanceof HorizontalGalleryView)) {      requestDisallowInterceptTouchEvent(true);      return true;    }    return super.canScroll(v, checkV, dx, x, y);  }

  @Override  public boolean dispatchTouchEvent(MotionEvent ev) {    switch (ev.getAction()) {      case MotionEvent.ACTION_UP:      case MotionEvent.ACTION_CANCEL:        break;      default:        break;    }    return super.dispatchTouchEvent(ev);  }

  //设置不允许左右滚动  public void setNoScroll(boolean noScroll) {    this.mNoScroll = noScroll;  }

  @Override  public boolean onTouchEvent(MotionEvent arg0) {    if (mNoScroll) {      return false;    }    return super.onTouchEvent(arg0);  }

  @Override  public boolean onInterceptTouchEvent(MotionEvent arg0) {    if (mNoScroll) {      return false;    }

    return super.onInterceptTouchEvent(arg0);  }}
时间: 2024-10-07 06:40:53

自定义ViewPager,避免左右滑动时与水平滑动控件冲突的相关文章

android进度条、滑动条和评分控件

所谓进度条.滑动条和评分控件,在手机应用中,相信你见过加载游戏时.更新应用时等情况,屏幕出现一条进度栏,这里称之为进度条:当你调节音量时出现的这里即称作滑动条:而评分控件,当你在淘宝给卖家评价时出现的类似5星评价,这里即称作评分控件,下面将分别详细说明这三种控件的基础使用方法. 一.ProgressBar进度条控件 1. 首先ProgressBar进度条给出了两种样式,分别是progressBarStyleLarge和progressBarStyleHorizontal,此次主要以progres

如果写一个android桌面滑动切换屏幕的控件(二)

在viewgroup执行: public void snapToScreen(int whichScreen) { whichScreen = Math.max(0, Math.min(whichScreen, getChildCount() - 1)); boolean changingScreens = whichScreen != mCurrentScreen; mNextScreen = whichScreen; int mScrollX = this.getScrollX(); fin

如果写一个android桌面滑动切换屏幕的控件(三)

下面我们把这个控件内嵌到Layout中做一些动画和展示,效果图: 这个子控件可以上下移动,可以左右滑动,如果上下滑动距离大于左右滑动距离,则必须上下滑动 这样来写onTouch事件: @Override public boolean onTouchEvent(MotionEvent ev) { if (mVelocityTracker == null) { mVelocityTracker = VelocityTracker.obtain(); } mVelocityTracker.addMov

如果写一个android桌面滑动切换屏幕的控件(一)

首先这个控件应该是继承ViewGroup: 初始化: public class MyGroup extends ViewGroup{ private Scroller mScroller; private float mOriMotionX; private float mLastMotionX; private VelocityTracker mVelocityTracker; private int mTouchState = TOUCH_STATE_REST; private static

使用 ViewPager 和 RadioGroup 封装的一个导航控件

import android.animation.ObjectAnimator; import android.content.Context; import android.graphics.drawable.Drawable; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentManager;

ScrollView垂直滚动控件和HorizontalScrollView水平滚动控件

这个控件的特点就是里面只可以有一个控件,一般我们都是这样来做,外面放一个滚动条控件,里面放一个垂直的线性布局垂直摆放,然后在线性布局里添加控件 http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height=

macbook pro 苹果鼠标magic mouse2在win10下禁用左右滑动、水平滑动以及其他设置

前段时间入手一台macbook pro,同时购买了一个magic mouse2 相信大部分程序员同志,只要用macbook都回装双系统的,本人也不例外,因为需要用到vs等很多开发工具. magic mouse2在osx上的表现本人不做评论,没用过几回,在win10上的表现太差劲了,特别是对于经常使用代码编辑器的程序员,或者经常使用word.excel之类的工作者,这鼠标简直是煎熬.左右滑动这等高大上的功能,在代码编辑中完全是一锅汤里的老鼠屎,相信用过的都会有体会的.本来你要下拉,却发现它左右滑动

【Android界面实现】ZListView,一个最强大的刷新、加载、滑动删除的ListView控件(二)

转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992 我们接着上篇的文章说,在前一篇文章中,我们学习了ZListView的使用,这一篇就开始说一些干货了,本篇文章将介绍ZListView的实现原理. 其实说是ZListView的实现原理,不如说是ZSwipeItem的实现原理,因为ZSwipeItem才是滑动的关键所在. ZSwipeItem的滑动,主要是通过ViewDragHelper这个类实现的.在接触这个项目之前,我没听过,也从来碰到过这个类,View

[Swift通天遁地]九、拔剑吧-(4)使用开源类库创建可滑动的Segment分段控件

本文将演示创建多种自定义Segment分段样式的控件. 首先确保已经安装了所需的第三方类库.双击查看安装配置文件[Podfile] 1 platform :ios, ‘12.0’ 2 use_frameworks! 3 4 target 'DemoApp' do 5 source 'https://github.com/CocoaPods/Specs.git' 6 pod 'TwicketSegmentedControl' 7 end 根据配置文件中的相关设置,安装第三方类库. 安装完成之后,双