У меня есть требование нарисовать рамку вокруг родительского макета в Xamarin.Android, это может быть любой макет, например FrameLayout, LinearLayout и т. д.
Я добился этого с помощью GradientDrawable - это похоже на установку фона для макета с помощью формы.
Итак, мое требование будет выполнено
Запрос
При установке радиуса угла для границы дочерние элементы не отсекаются. Как подстричь детей или любой другой способ сделать и то, и другое? Пожалуйста, поделитесь своим предложением по этому поводу.?
Примечание: я пробовал использовать ClipChildren, ClipToPadding для макета.
PS: Вышеупомянутые изображения упомянуты для иллюстрации, они не являются точным результатом.
TIA.
Вы можете обрезать вид, используя холст. Используйте метод 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; для родителя решает проблему.