android - 在 RecyclerView 项目之外绘制 View

标签 android clipping

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

Clipped action button

我该如何解决这种情况?

我尝试在标题 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);
        }
    }

Done.

关于android - 在 RecyclerView 项目之外绘制 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28659915/

相关文章:

android - ViewPager inside fragment,如何保持状态?

java - java中如何调用类的静态 block

android - 如何从房间 dao 访问中获取光标对象列表?

java - libgdx 剪切图像

xaml - 图像翻译被剪裁(如何防止)

java - 更新其网站的应用程序

android - 在 C 中通过 strtok 实现拆分字符串 - 段错误(核心转储)

ios - 使用贝塞尔路径作为剪贴蒙版

javascript - WebGL 多 Canvas three.js 示例

animation - 在 Windows 8/Metro/Store 中对 RectangleGeometry(在 Image.Clip 内)进行动画处理