在 RecyclerView 项之外绘制视图
Draw view outside of RecyclerView item
我有一个 RecyclerView
,由 header 和列表项组成,对于每个 header,我想在其边缘添加一个浮动操作按钮。但是我的按钮被 header 视图裁剪了:
我该如何补救这种情况?
我试过在 header 视图上设置 android:clipChildren="false"
。但这对我没有任何作用。我还担心这个选项可能会影响性能,因为我记得这个设置会强制 parent ViewGroup
重绘其 children 的 all当一个脏了。
将您的按钮放在 to/over 您的 RecyclerView
旁边。将滚动侦听器附加到 RecyclerView
,然后滚动:
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
View firstChild = recyclerView.getChildAt(0);
int ixFirstChild = (Integer) firstChild.getTag(); // Assumes your Adapter gives indices to the views in onBindViewHolder
int ixHeader = mAdapter.foldersHeaderPosition() - ixFirstChild; //Assumes you know where the header is
if (ixHeader >= -1 && ixHeader < recyclerView.getChildCount()) {
View header = recyclerView.getChildAt(ixHeader+1);
int top = header.getTop();
btn.setVisibility(View.VISIBLE);
int hgt = btn.getHeight();
ViewHelper.setY(btn, top - (hgt / 2));
} else {
btn.setVisibility(View.GONE);
}
}
我有一个 RecyclerView
,由 header 和列表项组成,对于每个 header,我想在其边缘添加一个浮动操作按钮。但是我的按钮被 header 视图裁剪了:
我该如何补救这种情况?
我试过在 header 视图上设置 android:clipChildren="false"
。但这对我没有任何作用。我还担心这个选项可能会影响性能,因为我记得这个设置会强制 parent ViewGroup
重绘其 children 的 all当一个脏了。
将您的按钮放在 to/over 您的 RecyclerView
旁边。将滚动侦听器附加到 RecyclerView
,然后滚动:
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
View firstChild = recyclerView.getChildAt(0);
int ixFirstChild = (Integer) firstChild.getTag(); // Assumes your Adapter gives indices to the views in onBindViewHolder
int ixHeader = mAdapter.foldersHeaderPosition() - ixFirstChild; //Assumes you know where the header is
if (ixHeader >= -1 && ixHeader < recyclerView.getChildCount()) {
View header = recyclerView.getChildAt(ixHeader+1);
int top = header.getTop();
btn.setVisibility(View.VISIBLE);
int hgt = btn.getHeight();
ViewHelper.setY(btn, top - (hgt / 2));
} else {
btn.setVisibility(View.GONE);
}
}