Поскольку вы просто используете форму для создания макета со скругленными углами и границей, первый вариант - обернуть LinearLayout
в CardView
, а затем применить к карте радиус угла, обводку и цвет фона.
В противном случае вы можете использовать MaterialShapeDrawable
, включенные в библиотеку компонентов материала, для рисования пользовательских фигур .
Просто удалите из LinearLayout android:background
:
<LinearLayout
android:id="@+id/interviewTimelineIconLayout"
android:layout_width=".."
android:layout_height="..
..>
<!-- ..... -->
</LinearLayout>
Тогда в вашем коде вы можете применить ShapeAppearanceModel
. Что-то вроде:
float radius = getResources().getDimension(R.dimen.corner_radius);
LinearLayout linearLayout= findViewById(R.id.interviewTimelineIconLayout);
ShapeAppearanceModel shapeAppearanceModel = new ShapeAppearanceModel()
.toBuilder()
.setAllCorners(CornerFamily.ROUNDED,radius)
.build();
MaterialShapeDrawable shapeDrawable = new MaterialShapeDrawable(shapeAppearanceModel);
//Fill the LinearLayout with your color
shapeDrawable.setFillColor(ContextCompat.getColorStateList(this,R.color.yourColor));
//Stroke color and width
shapeDrawable.setStrokeWidth(2.0f);
shapeDrawable.setStrokeColor(...);
ViewCompat.setBackground(linearLayout,shapeDrawable);
Таким образом, вы легко можете изменить и установить цвет фона и обводку.