我如何摆脱HorizontalScrollView的滚动条?
我想用Gallery的一些特性来实现Horizontal ScrollView , 如果我们有三个图像显示在屏幕上,点击最后一个图像将安排在中心。 我将如何实现HorizontalSCrollView如上所述?
我在我的应用程序中实现了新的SwipeRefreshLayout组件,并且它适用于任何垂直视图,如ListView , GridView和ScrollView 。 水平视图的行为非常糟糕,比如HorizontalScrollView 。 当滚动到右侧或左侧时, SwipeRefreshLayout视图caching触摸,防止HorizontalScrollView接收并垂直滚动以执行刷新。 我试着解决这个问题,因为我以前用ViewPager解决垂直ScrollView问题,使用requestDisallowInterceptTouchEvent但它没有工作。 我也注意到这个方法在原来的SwipeRefreshLayout类中被覆盖而没有返回超类。 谷歌的开发人员留下了一个评论,而不是“/ / //Nope. ” 由于SwipeRefreshLayout组件是相对较新的,我找不到一个解决scheme,修复了水平滚动问题,同时仍然允许刷新视图来跟踪和处理垂直滚动,所以我想我会分享我的解决scheme,希望它会让别人一两个小时。
我有一个滚动视图,围绕我的整个布局,使整个屏幕滚动。 我在这个ScrollView中的第一个元素是一个HorizontalScrollView块,它具有可以水平滚动的function。 我已经在horizontalscrollview中添加了一个ontouchlistener来处理触摸事件,并强制视图“捕捉”ACTION_UP事件中最接近的图像。 所以我要去的效果就像股票的安卓主屏幕,你可以从一个滚动到另一个,当你拿起你的手指时,它会捕捉到一个屏幕。 这一切都很好,除了一个问题:我需要左右滑动几乎完全水平为ACTION_UP永远注册。 如果我至less垂直滑动(我认为很多人倾向于在左右滑动时使用手机),我将收到ACTION_CANCEL而不是ACTION_UP。 我的理论是,这是因为horizontalscrollview在滚动视图内,滚动视图劫持垂直触摸允许垂直滚动。 如何从我的水平滚动视图中禁用滚动视图的触摸事件,但是仍然允许在滚动视图中的其他地方进行正常的垂直滚动? 以下是我的代码示例: public class HomeFeatureLayout extends HorizontalScrollView { private ArrayList<ListItem> items = null; private GestureDetector gestureDetector; View.OnTouchListener gestureListener; private static final int SWIPE_MIN_DISTANCE = 5; private static final int SWIPE_THRESHOLD_VELOCITY = 300; private int activeFeature = 0; public HomeFeatureLayout(Context context, ArrayList<ListItem> items){ super(context); setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT)); setFadingEdgeLength(0); this.setHorizontalScrollBarEnabled(false); […]