Как сделать полукруглое отверстие в стороне прямоугольника? - PullRequest
0 голосов
/ 15 января 2020

Мне нужно сделать прямоугольник с круглым отверстием посередине примерно так:

enter image description here

1 Ответ

2 голосов
/ 15 января 2020

Есть разные способы его получения.
Вы можете использовать Библиотеку компонентов материалов и MaterialShapeDrawable для создания пользовательского контура фигуры (вам нужна версия 1.1.0)

Например, вы можете сделать что-то вроде:

LinearLayout linearLayout= findViewById(R.id.linear_rounded);
//Use the BottomAppBarTopEdgeTreatment to apply the bottom edge shape, or just create a custom class to obtain a similar shape
BottomAppBarTopEdgeTreatment bottomAppBarTopEdgeTreatment = new BottomAppBarTopEdgeTreatment(
    getResources().getDimension(R.dimen.margin),
    getResources().getDimension(R.dimen.rounded_corner),
    getResources().getDimension(R.dimen.vertical_offset)
);
bottomAppBarTopEdgeTreatment.setFabDiameter(getResources().getDimension(R.dimen.diameter));

ShapeAppearanceModel shapeAppearanceModel = new ShapeAppearanceModel()
    .toBuilder()
    .setAllCorners(CornerFamily.ROUNDED,radius)
    .setBottomLeftCorner(CornerFamily.ROUNDED,0)  
    .setBottomRightCorner(CornerFamily.ROUNDED,0)
    .setBottomEdge(bottomAppBarTopEdgeTreatment)
    .build();
MaterialShapeDrawable shapeDrawable = new MaterialShapeDrawable(shapeAppearanceModel);
ViewCompat.setBackground(linearLayout,shapeDrawable);

enter image description here

...