0

我有一個活動,一個RecyclerView,然後是一個FrameLayout下面。最初,RecyclerView有一個元素,它是一個LinearLayout,其餘元素將在運行時添加(這些也將是LinearLayouts)。下面的第一張圖片顯示了這個初始設置。如何使RecyclerView的所有元素(除第一個元素外)覆蓋Activity的其餘內容?

然後在運行時(參見下面的第二張圖片),將更多LinearLayout s添加到RecyclerView(統稱爲綠色框)。

現在的挑戰是,藍色FrameLayout沒有得到重疊或由LinearLayout與橙色邊框覆蓋。但是當綠色LinearLayout被添加到RecyclerView時,它應該覆蓋它下面的所有內容(基本上是藍色的FrameLayout)。

一種方法是實際上使整個RecyclerView覆蓋一切,並給出了一個的FrameLayout值paddingTop等同於橙色LinearLayout的高度?但的問題是(1)看起來很亂,所以它可能應該在沒有其他方式時完成(2)我不知道橙色LinearLayout的高度(因爲它是wrap_content)。

那我應該怎麼辦呢?

enter image description here

enter image description here

回答

1

希望我得到的東西吧,我會跟你提出的解決方案。實際上,這對我來說似乎不算什麼。 您可以隨時測量第一個LinearLayout一旦佈局並相應地設置填充。

getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { 
      @Override 
      public void onGlobalLayout() { 
       getViewTreeObserver().removeOnGlobalLayoutListener(this); 
       measureAndSetPadding(); 
      } 
    }); 
相關問題