如何为工具栏制作圆角?
How to make rounded corners for Toolbar?
我看过其他答案,它们都适用于操作栏而不是工具栏,并且它们需要创建新的形状。
有没有一种简单的方法可以使用 styles.xml
来做到这一点?
创建可绘制资源(例如curvedToolbar.XML):
<?xml version="1.0" encoding ="utf-8"?>
<shape xmls:android="http://schemas.android.com/apk/red/android"
android:shape="rectangle">
<corners android:radius= "20dp"/>
</shape>
像这样将它添加到您的工具栏:
<androidx.appcompat.widget.Toolbar
......
android:background= "@drawable/curvedToolbar"
/>
这不是您要查找的内容,因为它没有 xml。
当前(1.2.0-beta01
和 1.3.0-alpha01
)Toolbar
或 MaterialToolbar
不像 styles.xml
中的其他组件那样支持 shapeAppearance
样式。
但是您可以在任何情况下使用 Material 组件库提供的 ShapeAppearanceModel
。
在您的布局中:
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/toolbar"
style="@style/Widget.MaterialComponents.Toolbar.Primary"
android:layout_margin="4dp"
..>
然后只需应用 ShapeAppearanceModel
圆角:
float radius = getResources().getDimension(R.dimen.default_corner_radius); //32dp
MaterialToolbar toolbar = findViewById(R.id.toolbar);
MaterialShapeDrawable materialShapeDrawable = (MaterialShapeDrawable)toolbar.getBackground();
materialShapeDrawable.setShapeAppearanceModel(materialShapeDrawable.getShapeAppearanceModel()
.toBuilder()
.setAllCorners(CornerFamily.ROUNDED,radius)
.build());
我看过其他答案,它们都适用于操作栏而不是工具栏,并且它们需要创建新的形状。
有没有一种简单的方法可以使用 styles.xml
来做到这一点?
创建可绘制资源(例如curvedToolbar.XML):
<?xml version="1.0" encoding ="utf-8"?>
<shape xmls:android="http://schemas.android.com/apk/red/android"
android:shape="rectangle">
<corners android:radius= "20dp"/>
</shape>
像这样将它添加到您的工具栏:
<androidx.appcompat.widget.Toolbar
......
android:background= "@drawable/curvedToolbar"
/>
这不是您要查找的内容,因为它没有 xml。
当前(1.2.0-beta01
和 1.3.0-alpha01
)Toolbar
或 MaterialToolbar
不像 styles.xml
中的其他组件那样支持 shapeAppearance
样式。
但是您可以在任何情况下使用 Material 组件库提供的 ShapeAppearanceModel
。
在您的布局中:
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/toolbar"
style="@style/Widget.MaterialComponents.Toolbar.Primary"
android:layout_margin="4dp"
..>
然后只需应用 ShapeAppearanceModel
圆角:
float radius = getResources().getDimension(R.dimen.default_corner_radius); //32dp
MaterialToolbar toolbar = findViewById(R.id.toolbar);
MaterialShapeDrawable materialShapeDrawable = (MaterialShapeDrawable)toolbar.getBackground();
materialShapeDrawable.setShapeAppearanceModel(materialShapeDrawable.getShapeAppearanceModel()
.toBuilder()
.setAllCorners(CornerFamily.ROUNDED,radius)
.build());