在RecyclerView项目之外绘制视图

时间:2015-02-22 15:59:00

标签: android clipping

我有一个RecyclerView由标题和列表项组成,对于每个标题,我想在其边缘添加一个浮动操作按钮。但是我的按钮被标题视图剪切:

Clipped action button

如何解决这种情况?

我已尝试在标题视图上设置android:clipChildren="false"。但这对我没有任何作用。我还担心此选项可能会影响性能,因为我记得此设置强制父ViewGroup重绘其子项的所有。当其中一个是脏的时。

1 个答案:

答案 0 :(得分:1)

将您的按钮放在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);
        }
    }

Done.