如何让 RecyclerView 的所有元素,除了第一个元素,覆盖 Activity 的其余内容?

How to make all the elements of a RecyclerView, EXCEPT the first element, overlay the rest of the content of Activity?

我有一个 Activity,下面有一个 RecyclerView,然后是一个 FrameLayout。最初,RecyclerView 有一个元素是 LinearLayout,其余元素将在运行时添加(也将是 LinearLayouts)。下面的第一张图片显示了这个初始设置。

然后在运行时(见下面第二张图),更多的LinearLayout将被添加到RecyclerView(统称为绿色框)。

现在的挑战是蓝色FrameLayout不会被LinearLayout与橙色边框重叠或覆盖。但是当 green LinearLayout 添加到 RecyclerView 时,它应该覆盖它下面的所有内容(基本上是蓝色的 FrameLayout)。

一种方法是实际使整个 RecyclerView 覆盖所有其他内容,并为 FrameLayout 提供一个 paddingTop 等于 橙色LinearLayout?但是 的问题是 (1) 它看起来很老套,所以在没有其他办法的情况下应该这样做 (2) 我不知道橙色 LinearLayout 的高度是多少(因为它是 wrap_content)。

那我该怎么办呢?

希望我做对了,我会采用你提出的解决方案。实际上对我来说似乎并不那么hacky。 您始终可以在第一个 LinearLayout 布局后对其进行测量,并相应地设置填充。

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