2016-11-22 16 views
6

Tôi muốn cuộn dọc trên chỉ CollapsingToolbarLayout/AppBarLayout khi sự kiện cuộn/chạm xảy ra trong nestedscrollview (điều này đang hoạt động), nhưng nếu người dùng cố gắng cuộn trực tiếp CollapsingToolbarLayout/AppBarLayout nó không nên hoạt động. Tôi cần điều này bởi vì các sự kiện cuộn/chạm có rối tung với các sự kiện cuộn recyclerview của tôi.Vô hiệu hoá cuộn dọc trong CollapsingToolbarLayout/AppBarLayout

Tôi có cấu trúc này:

CoordinatorLayout 

-- AppBarLayout 

---- CollapsingToolbarLayout (scrollflags: scroll, exitUntilCollapsed, snap) 

------ Toolbar (CollapseMode: pin) 

------ RecyclerView (Horizontal, CollapseMode: pin) 

----- /CollapsingToolbarLayout 

-- /AppBarLayout 

-- NestedScrollView (Behaviour: appbar_scrolling_view_behavior) 

-- /NestedScrollView 

/CoordinatorLayout 

tôi đã cố gắng trọng onTouch() và onInterceptTouchEvent() cho cả CollapsingToolbarLayout/AppBarLayout nhưng nó vẫn không ngừng chặn sự kiện touch/cuộn.

Trả lời

13

Ok, tôi đã tìm ra giải pháp cho việc này.

Bạn chỉ cần ghi đè phương thức onDrag() trong hành vi AppBarLayout và cuộn sẽ không được kích hoạt nếu chạm xảy ra ở phía trên màn hình AppBarLayout.

CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) appBarLayout.getLayoutParams(); 
AppBarLayout.Behavior behavior = (AppBarLayout.Behavior) params.getBehavior(); 
behavior.setDragCallback(new AppBarLayout.Behavior.DragCallback() { 
    @Override 
    public boolean canDrag(@NonNull AppBarLayout appBarLayout) { 
     return false; 
    } 
}); 

Giải pháp từ đây: How to disable scrolling of AppBarLayout in CoordinatorLayout?

Nếu bạn chạy vào NullPointerException vì một hành vi null, bạn nên gán đầu tiên:

CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) mAppbar.getLayoutParams(); 
params.setBehavior(new AppBarLayout.Behavior()); 
+0

Cảm ơn bạn. Điều này làm việc nhưng tôi vẫn có vấn đề về thay đổi định hướng. Đây có phải là thứ bạn thấy không? –

+0

Cảm ơn !!! 10000000 Cảm ơn !!!! Điều này thực sự hoạt động !!!!))))))) – maXp

Các vấn đề liên quan