我有一个由标题和列表项组成的 RecyclerView,对于每个标题,我想在其边缘添加一个 float 操作按钮。但是我的按钮被标题 View 剪切了:
我该如何解决这种情况?
我尝试在标题 View 上设置 android:clipChildren="false"
。但这对我没有任何作用。我还担心此选项可能会影响性能,因为我记得此设置会强制父 ViewGroup
在其子项脏时重绘其所有。
最佳答案
将按钮放在 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);
}
}
关于android - 在 RecyclerView 项目之外绘制 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28659915/