在RecyclerView中添加时使用路径创建问题的绘制形状

时间:2017-10-29 13:49:48

标签: android android-layout android-recyclerview android-canvas

我创建了自定义视图并尝试在绘制中绘制形状。形状以CYAN颜色显示在附件中。但是当我在滚动其原始宽度和重叠视图后在回收器视图中添加该自定义视图时。如果我尝试使用line它不会创建任何概率,但只有路径正在创建问题。请建议一种方法来实现我想要使用的形状。

我曾经用onDraw()方法

绘制形状的代码
            int totalWidth=xMargin+width;
            int totalHeight=yMargin+height;
            //draw required share here
            path.moveTo(totalWidth,yMargin);
            path.lineTo(totalWidth,yMargin);
            path.lineTo(totalWidth-offset,yMargin+offset);
            path.lineTo(totalWidth-offset,totalHeight-offset);
            path.lineTo(totalWidth-2*offset,totalHeight);
            path.lineTo(xMargin,totalHeight);
            path.lineTo(xMargin,yMargin+offset);
            path.lineTo(xMargin+offset,yMargin);

            canvas.drawPath(path, pathPaint);

enter image description here

你可以看到我滚动的时候,我的绘画形状正在改变。

2 个答案:

答案 0 :(得分:0)

由于提供的信息很少,我可以假设您的形状(聊天气泡)没有被RecyclerView正确评估,因为它可能不知道列表中每个项目的形状类型/大小,这会导致你的清单碰撞一些物品。 考虑到这一点,我可以说我遇到了类似的问题并使用这些方法解决了这个问题:

    // Invalidate data
    adapter.notifyDataSetChanged();
    // Hard reset of the list
    recyclerView.setAdapter(adapter);

通过上面的行我们重置适配器以使数据集无效,迫使回收者放弃所有项目视图并重新创建新项目(现在每个项目都有正确的视图)。

我希望它有所帮助。

答案 1 :(得分:0)

由于路径未重置,因此绘制了重叠的绘图部分。 通过增加 path.reset();path.moveTo(totalWidth,yMargin);我的问题解决之前。