Нарисуйте границу и обрежьте ее дочерние элементы

У меня есть требование нарисовать рамку вокруг родительского макета в Xamarin.Android, это может быть любой макет, например FrameLayout, LinearLayout и т. д.

Я добился этого с помощью GradientDrawable - это похоже на установку фона для макета с помощью формы.

Итак, мое требование будет выполнено

Нарисуйте границу и обрежьте ее дочерние элементы

Запрос

При установке радиуса угла для границы дочерние элементы не отсекаются. Как подстричь детей или любой другой способ сделать и то, и другое? Пожалуйста, поделитесь своим предложением по этому поводу.?

Примечание: я пробовал использовать ClipChildren, ClipToPadding для макета.

Нарисуйте границу и обрежьте ее дочерние элементы PS: Вышеупомянутые изображения упомянуты для иллюстрации, они не являются точным результатом.

TIA.

0
0
1 396
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Вы можете обрезать вид, используя холст. Используйте метод ClipPath (path) Canvas, чтобы вырезать требуемую область.

Синтаксис:

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

Вы можете использовать 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);

ViewOutlineProvider доступен, начиная с API 21. Не уверен, применимо ли решение для Xamarin (надеюсь, что это так).

Ответ принят как подходящий

Установка ClipToOutline = true; для родителя решает проблему.

Другие вопросы по теме