У меня есть решение , но для него требуется v21 Lollipop и выше .
Вы можете сделать это программно следующим образом:
В вашем классе деятельности есть public static int radius = 20;
а в твоих Oncreate()
;
CardView card = findViewById(R.id.my_card);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
makeCustomOutline(card);
}
затем определите функцию следующим образом:
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
private void makeCustomOutline(CardView card){
card.setOutlineProvider(new ViewOutlineProvider() {
@Override
public void getOutline(View view, Outline outline) {
outline.setRoundRect(0, 0, view.getWidth(),
(view.getHeight() + radius), (float)radius );
}
});
card.setClipToOutline(true);
}
С помощью метода setRoundRect()
вы можете контролировать, какой угол обзора карты получает радиус, а какой - нет. Приведенный выше код закругляет только верхние углы, а нижние углы не закругляются.
Ссылки:
Этот ответ был адаптирован из этой статьи
документы по методу setRoundRect ()
документы на ViewOutlineProvider