0

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

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

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

一种方法是实际上使整个 RecyclerView 覆盖其他所有内容,并为 FrameLayout 赋予一个paddingTop等于橙色LinearLayout高度的值?但问题在于(1)它看起来很hacky,所以当没有其他方法时可能应该这样做(2)我不知道橙色LinearLayout的高度是多少(因为它是wrap_content)。

那么我该怎么做呢?

在此处输入图像描述

在此处输入图像描述

4

1 回答 1

1

希望我做对了,我会接受你提出的解决方案。实际上,这对我来说似乎并不那么糟糕。LinearLayout一旦布局好,您始终可以测量第一个并相应地设置填充。

  getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
            @Override
            public void onGlobalLayout() { 
               getViewTreeObserver().removeOnGlobalLayoutListener(this);
               measureAndSetPadding();
            }
  });
于 2015-09-04T12:14:46.637 回答