绘制边框并剪切其子项

时间:2018-03-15 11:20:13

标签: android android-layout xamarin xamarin.forms xamarin.android

我需要在Xamarin.Android的父级布局周围绘制边框,它可以是FrameLayoutLinearLayout等任何布局。

我通过使用GradientDrawable实现了这一点 - 这就像为具有形状的布局设置背景一样。

所以我的要求将会实现

enter image description here

查询

设置边框的圆角半径时,不会裁剪孩子。如何剪辑孩子或任何其他方式替代做两者?请与您分享您的建议。?

注意:我尝试使用ClipChildrenClipToPadding进行布局。

enter image description here PS:上面的图片是出于说明目的而提及的,它们并不是确切的输出。

TIA。

3 个答案:

答案 0 :(得分:1)

您可以使用画布剪辑视图。使用Canvas的ClipPath(路径)方法剪切所需区域。

语法:

Path path = new Path();
path.AddCircle(200,200,100,Direction.CW);
canvas.ClipPath(path);

答案 1 :(得分:1)

您可以使用ViewOutlineProvider API。作为示例用法,请参阅ClippingBasic项目。

已定义大纲提供者类:


    private class OvalOutlineProvider extends ViewOutlineProvider {
        @Override
        public void getOutline(View view, Outline outline) {
            outline.setOval(0, 0, view.getWidth(), view.getHeight());
        }
    }

然后将视图轮廓应用于父级:


    View parent = findViewById(R.id.parent);
    parent.setOutlineProvider(new OvalOutlineProvider());
    parent.setClipToOutline(true);

从API 21开始可以访问

ViewOutlineProvider。不确定该解决方案是否适用于Xamarin(希望如此)。

答案 2 :(得分:0)

为父级设置ClipToOutline = true;,可以解决问题。