LinearLayout包裹RecyclerView,若是想給整個佈局設置點擊事件,發現當點擊列表部分的時候點擊事件不響應,猜想可能被recyclerview消耗了點擊事件,因此只要讓recycleview不攔截點擊事件而且子view不消費這個事件,那麼點擊事件就會回傳給父view也就是最外層的LinearLayout才處理這個事件,因而看了一下recycleview的源碼:markdown
經過onInterceptTouchEvent()和onTouchEvent()這2個方法,發現了一個參數mLayoutFrozen,若是他爲true的時候,recycleview這2個方法都會返回false,也就不會攔截這個事件了。因而我找到設置這個方法的地方: 上面的註釋也寫的很清楚,設置他爲true,至關於凍結了recycleview,不能滾動不能點擊,可是設置了以後仍是沒法響應點擊事件,因而我又看到註釋上面寫了 {@link #setAdapter(Adapter)} and {@link #swapAdapter(Adapter, boolean)} will automatically * stop frozen. 這句話意思就是setAdapter(Adapter)會把這個參數設爲false,因而我找到setAdapter方法: 果真,因而我在setAdapter以後再setLayoutFrozen(),這樣就達到需求了。