使用剪切来使视图组的圆角
2022-09-03 04:40:37
我有一个需要圆角的左上角和右上角。我可以使用用XML定义的可绘制背景来做到这一点,其中角为topLeftRadius和topRightRadius。但。。。这还需要具有一个背景,该背景是具有平铺位图和形状组合的图层列表,并且平铺位图在可绘制的 XML 中没有 corners 参数。所以我的想法是用下面的代码做一个:RelativeLayout
RelativeLayout
RelativeLayout
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
path.reset();
rect.set(0, 0, w, h);
path.addRoundRect(rect, radius, radius, Path.Direction.CW);
path.close();
}
@Override
protected void dispatchDraw(Canvas canvas) {
int save = canvas.save();
canvas.clipPath(path);
super.dispatchDraw(canvas);
canvas.restoreToCount(save);
}
可悲的是,没有发生剪切,我期望它修剪相对布局的所有四个角,但什么也没发生。“onSizeChanged”和“dispatchDraw”方法都调用了,我测试了一下。我也尝试过关闭硬件加速,但它什么也没做。
My 是较大布局的一部分,并且该布局在 的子类中膨胀,然后该子类在 的行中使用,如果这改变了什么。RelativeLayout
FrameLayout
RecyclerView