如何让 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();
}
});
我有一个 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();
}
});