3

我有一個佈局看起來有點像這樣:如何防止AppBarLayout擴展?

<FrameLayout> 
    <Scrollview (empty view, set GONE)> 
    <LinearLayout (loading screen, set GONE)> 
    <CoordinatorLayout> 
     <AppBarLayout> 
      <RelativeLayout scroll|enterAlways|enterAlwaysCollapsed> 
     </AppBarLayout> 
     <RecyclerView with layout_behavior set> 
     <NestedScrollView (variation of empty layout, set GONE)> 
    </CoordinatorLayout> 
</FrameLayout> 

在AppBarLayout存在水平RecyclerView與細胞,然後在下面的主RecyclerView包含不同類型的細胞和滾動垂直。這在滾動時非常有用 - AppBarLayout完美顯示並消失。

當在兩個RecyclerView中搜索並限制結果時,問題就出現了。當RecyclerView爲空時,它應該消失 - 所以當頂部水平RecyclerView爲空時,整個AppBarLayout應該消失。

爲了實現這個目標,我打電話給AppBarLayout.setExpanded(false) - 這是工作。但是,在調用後,如果向上或向下滾動垂直RecyclerView,則AppBarLayout將展開並顯示其自身。我也嘗試重置LayoutParams scrollFlags,使它們爲0,這應該禁用滾動。 AppBarLayout不再滾動 - 但仍然展開。

我該如何完全防止AppBarLayout擴展?我需要關閉它,並強制它保持關閉,直到我重置它,而不管用戶做什麼。

回答

1

在另一個地方,我設置了一個滾動偵聽器來擴展頂部的視圖。這引發了它不應該有的擴張。