У меня есть RelativeLayout
, который должен иметь закругленные верхние левые и верхние правые углы. Я могу сделать это с помощью выделенного фона, определенного в XML с углами topLeftRadius и topRightRadius. Но... Этот RelativeLayout
также должен иметь фон, который является списком слоев с черепичным битовым рисунком и комбинацией фигур, а битовая карта с черепицей не имеет параметра углов в извлекаемом XML. Поэтому моя идея состояла в том, чтобы сделать 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);
}
К сожалению, никаких обрезков не происходит, я ожидал, что он закроет все четыре угла моего RelativeLayout, но ничего не происходит. Методы "onSizeChanged" и "dispatchDraw" вызываются, я тестировал это. Я также попытался отключить аппаратное ускорение, но ничего не делает.
My RelativeLayout
является частью более крупного макета, и этот макет раздувается в подклассе FrameLayout
, и этот подкласс затем использует строку в RecyclerView
, если это что-то меняет.