1. 程式人生 > >android下拉重新整理和listview衝突解決方案

android下拉重新整理和listview衝突解決方案

相關文章:


常見的下拉重新整理都是帶有一些自定義的listview、gridview和webview,我們導包直接用就行了,但是為什麼他們要自定義一些常用的控制元件呢?直接在外邊套用不行嗎?類似於SwipeLayout,他是在ViewGroup的層面上動刀,可以巢狀任何的元件的,那麼我們先去看一個效果你就知道了。

效果圖:


我之前用的都是封裝庫,沒有怎麼碰到過這種情況,但是自己寫了一個下拉重新整理之後,碰到這種問題,不用思考,一看就是下拉重新整理和listview滑動衝突了,你是否明白了我在文章開頭說的那個問題了?

問題分析:

出現這個問題,首先考慮的就是因為下拉重新整理中巢狀的listview,根據View的分發機制可以知道,內部的view的時間最終是返回到外層的ViewGroup中進行處理得,說白了,如果不作處理的話,下拉重新整理這個ViewGroup的會代替listview處理觸控事件。

問題解決:

在ListView中監聽滑動是否在頭部,如果不在頭部攔截觸控機制ListView自己處理行為,如果滑到了頭部則放行觸控機制放行給外層下拉重新整理來處理行為。

程式碼:

自定義ListView攔截,在onInterceptTouchEvent中攔截

/** 
 * 自定義RefreshListView
 */  
public class RefreshListView extends ListView {  
    public PullListView(Context context) {  
        super(context);  
    }  
  
    public PullListView(Context context, AttributeSet attrs) {  
        super(context, attrs);  
    }  
  
    public PullListView(Context context, AttributeSet attrs, int defStyle) {  
        super(context, attrs, defStyle);  
    }  
  
    @Override  
    public boolean onInterceptTouchEvent(MotionEvent ev) {  
	//判斷是否滑動到頂部了
        if (getFirstVisiblePosition() == 0 && getChildAt(0).getTop() == 0) {//到頂部了
	    //返回觸控事件 
            getParent().requestDisallowInterceptTouchEvent(false); 
        } else {//沒有到頭部  
	    //攔截觸控事件 
            getParent().requestDisallowInterceptTouchEvent(true);
        }  
        return super.onInterceptTouchEvent(ev);  
    }  
} 
在你的xml檔案中使用這個自定義的listview,然後執行程式碼,看效果:


處理成功,其他的也是一樣的道理。

相關推薦

android重新整理listview衝突解決方案

相關文章: 常見的下拉重新整理都是帶有一些自定義的listview、gridview和webview,我們導包直接用就行了,但是為什麼他們要自定義一些常用的控制元件呢?直接在外邊套用不行嗎?類

Android 重新整理ListView衝突問題

當我們使用RefreshLayout巢狀ListView進行下拉重新整理時,有時候會出現listview可以上拉到底,但是下拉時就會進行重新整理操作,而不是滑動listview了。 出現這種問題的原因是在RefreshLayout控制元件中,只能夠放ListV

mint-UI上載入重新整理fastclick衝突問題解決

當我們的Vue專案為了解決IOS裝置事件點選卡頓,300ms的延遲的問題,引入了fastclick後,會有很多小的衝突,例如在使用mint-UI實現上拉載入和下拉重新整理的時候,經常會觸碰到點選事件進入下一個頁面,這是因為去掉300毫秒的延遲就會使得頁面特別靈敏,想著用阻止冒泡的方式來解決。 在

Android重新整理載入

先看看XML佈局檔案,下拉重新整理和上拉載入哪個在外層並沒有什麼影響。最裡面嵌套了一個RecycleView。 <android.support.v4.widget.SwipeRefreshLayout     android:id="@+id/gridswipre

Android分組列表懸停顯示,分組listView懸停效果,帶重新整理載入更多

分組列表,帶下拉重新整理和上拉載入更多【專案地址在文章最後!!】 效果圖: 實現過程,借鑑PinnedHeadListView,但是該demo沒有下拉重新整理功能,故將該控制元件整合到PullToRefresh 庫中,【PullToRefresh 庫為第

解決SwipeRefreshLayout重新整理ListView衝突

如果當我們使用 ListView 的時候使用了 SwipeRefreshLayout 下拉重新整理,那麼 ListView 的向下滑動就會與 SwipeRefreshLayout  的下拉重新整理產生衝突。當我們下拉介面時, SwipeRefreshLayout 會優先獲取

打造通用的Android重新整理元件 適用於ListView GridView等各類View

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

android smartRefresh重新整理載入

1.遠端依賴  compile 'com.scwang.smartrefresh:SmartRefreshLayout:1.0.5.1' 2.佈局中使用 <com.scwang.smartrefresh.layout.SmartRefreshLayout androi

android自定義重新整理載入控制元件

import android.content.Context; import android.graphics.Point; import android.support.v4.view.MotionEventCompat; import android.support.v4.view.NestedScro

自定義ListView實現重新整理載入

實現ListView的下拉重新整理和上拉載入,需要先新增headerView和footerView,通過在拖動的過程中,控制頭尾佈局的paddingTop實現。先把paddingTop設為負值,來隱藏header,在下拉的過程中,不斷改變headerView的p

android 模仿知乎重新整理載入

效果圖如下 activity_main.xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/

android快速開發框架--快速實現 頁面 載入中 載入失敗 無資料等狀態以及重新整理自動載入

RapidDevelop-Android快速開發框架 框架持續更新中 這個框架是從平時專案裡用的比較多的框架裡整合而來 對本專案感興趣的可以一起研究喜歡的朋友歡迎star 同時也歡迎大家的寶貴意見issues 如果大家對MVP模式的開發 網路爬蟲以及快取策略

Android RecyclerView重新整理載入封裝

效果圖:程式碼已經同步到github~Gradle引入依賴: allprojects { repositories { ... maven { url 'https://jitpack.io' } } }

(Android)五分鐘讓你輕鬆學會重新整理載入更多

分享一個谷歌自帶的下拉重新整理和上拉載入更多例子: 先看效果圖: /** * 繼承自SwipeRefreshLayout,從而實現滑動到底部時上拉載入更多的功能. */ public class RefreshLayout extends SwipeRefreshL

Android 自定義重新整理載入

完整程式碼在最下面。。 頭佈局xml: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_pare

Android簡單實現重新整理重新整理

先把佈局檔案裡面新增一個ListView控制元件, <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.a

Android —頁面重新整理ListView與SwipeRefreshLayout)

  相信大家在使用淘寶的時候應該都看到過下拉重新整理的效果。這種效果看起來會感覺比較難做,一起來看下下拉重新整理。 ListView 思路: 通過FrameLayout底層為下拉重新整理的Header,上面一層是ListView,監聽手指滑動設定動畫效

畢業設計之android混合模式開發第一天--具有重新整理頁面載入等待的WebView搭建

第一次真正接觸android的混合模式開發,之前瞭解過如何進行混合模式的開發,常見的是通過WebView元件載入url,使用HTML5和CSS3構建手機端響應式佈局。 今天主要是搭建出一個可載入url,具有下拉重新整理和頁面等待的WebView。 2.頁面等待的實現主要是

Android 重新整理 左右滑動 事件衝突

截獲listview和refreshlayout的dispatchTouchEvent方法,針對不同滑動通知父容器是否通知子控制元件獲取事件 CusMaterialRefreshLayout float xDown = -1,yDown=-1; @Overrid

android SwipeRefreshLayouthListView衝突解決

在最近的專案中,遇到下拉重新整理的需求..第一時間就想到了谷歌自家的SwipeRefreshLayouth,以前用過這個東西,在這裡面放一個listview或者gridview的時候效果很不錯.當初寫demo的時候也是這麼寫的.但是當真正使用他的時候,就發現了尷尬的事情.例