通过材料组件库,您可以使用MaterialShapeDrawable https://developer.android.com/reference/com/google/android/material/shape/MaterialShapeDrawable to 绘制自定义形状 https://github.com/material-components/material-components-android/blob/master/docs/theming/Shape.md.
例如与TextView
你可以做:
<TextView
android:id="@+id/textview"
android:backgroundTint="@color/secondaryColor"
../>
然后创建一个MaterialShapeDrawable
:
float radius = getResources().getDimension(R.dimen.default_corner_radius);
TextView textView = findViewById(R.id.textview);
ShapeAppearanceModel shapeAppearanceModel = new ShapeAppearanceModel()
.toBuilder()
.setAllCorners(CornerFamily.ROUNDED,radius)
.build();
MaterialShapeDrawable shapeDrawable = new MaterialShapeDrawable(shapeAppearanceModel);
ViewCompat.setBackground(textView,shapeDrawable);
用一个简单的View
:
<View
android:id="@+id/line"
android:layout_width="match_parent"
android:layout_height="4dp"
android:backgroundTint="@color/..."/>
然后应用同样的MaterialShapeDrawable
:
View line = findViewById(R.id.line);
ViewCompat.setBackground(line,shapeDrawable);
您还可以创建不同的角:
ShapeAppearanceModel shapeAppearanceModel = new ShapeAppearanceModel()
.toBuilder()
.setAllCorners(CornerFamily.ROUNDED,0)
.setBottomRightCorner(CornerFamily.ROUNDED,radius)
.build();
此外,大多数组件都由材料成分库 https://github.com/material-components/material-components-android有一个 MaterialShapeDrawable 作为背景。
在这些情况下,只需使用类似的东西(在本例中为 MaterialCardView)。
MaterialCardView cardView = findViewById(R.id.card);
cardView.setShapeAppearanceModel(cardView.getShapeAppearanceModel()
.toBuilder()
.setBottomLeftCornerSize(...)
.setBottomEdge(...)
.build());
它需要版本1.1.0图书馆的。现在1.1.0-beta02
.