在 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);
        }
    }