国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android ScrollView嵌套橫向滑動控件時沖突問題

2019-12-12 02:18:43
字體:
來源:轉載
供稿:網友

前言:今天在開發的時候遇到這樣的問題,最外層是ScrollView,里面嵌套了一個橫向滑動的日歷控件,在滑動日歷的時候很卡頓。看到這種問題,自然而然的就會想到scrollview和其他可滑動控件的沖突問題。

解決思路

用戶的左右滑動操作被最外層的scrollView控件處理掉了,所以只要讓scrollview對左右滑動事件不監聽,讓其子控件處理左右滑動事件 。重寫scrollview的onInterceptTouchEvent方法,當上下滑動時不處理即可。

代碼如下

public void setOnScollChangedListener(OnScollChangedListener onScollChangedListener) {  this.onScollChangedListener = onScollChangedListener;}@Overrideprotected void onScrollChanged(int x, int y, int oldx, int oldy) {  super.onScrollChanged(x, y, oldx, oldy);  if (onScollChangedListener != null) {    onScollChangedListener.onScrollChanged(this, x, y, oldx, oldy);  }}public interface OnScollChangedListener {  void onScrollChanged(ObservableScrollView scrollView, int x, int y, int oldx, int oldy);}@Overridepublic boolean onInterceptTouchEvent(MotionEvent ev) {  switch (ev.getAction()) {  case MotionEvent.ACTION_DOWN:    xDistance = yDistance = 0f;    xLast = ev.getX();    yLast = ev.getY();    break;  case MotionEvent.ACTION_MOVE:    final float curX = ev.getX();    final float curY = ev.getY();    xDistance += Math.abs(curX - xLast);    yDistance += Math.abs(curY - yLast);    xLast = curX;    yLast = curY;    /**     * X軸滑動距離大于Y軸滑動距離,也就是用戶橫向滑動時,返回false,ScrollView不處理這次事件,     * 讓子控件中的TouchEvent去處理,所以橫向滑動的事件交由子控件處理, ScrollView只處理縱向滑動事件     */    if (xDistance > yDistance) {      return false;    }  }  return super.onInterceptTouchEvent(ev);}}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 中宁县| 曲周县| 巫溪县| 宜章县| 洛宁县| 青冈县| 阳曲县| 宿州市| 固始县| 遂宁市| 西昌市| 锦屏县| 平陆县| 壶关县| 山西省| 米易县| 仙桃市| 平湖市| 张家港市| 德保县| 盐源县| 东平县| 朝阳区| 崇州市| 奎屯市| 北海市| 东乌珠穆沁旗| 平武县| 民丰县| 陈巴尔虎旗| 清河县| 鸡西市| 鸡东县| 巴林右旗| 和龙市| 四川省| 澄江县| 石家庄市| 长治县| 桑植县| 定远县|