我正在使用来自Google的BottomAppBar,如下所示:

 <com.google.android.material.bottomappbar.BottomAppBar
            android:id="@+id/vNavigationBar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

自定义底部栏是扁平的,我需要在底部栏上添加圆角(图像示例如下)

android - 如何将带有圆角的android BottomAppBar-LMLPHP

我应该怎么做才能使这种方式工作?

最佳答案

BottomAppBar与 MaterialShapeDrawable 一起使用,您可以将其应用于圆角(使用RoundedCornerTreatment)。
在您的布局中:

  <com.google.android.material.bottomappbar.BottomAppBar
      android:id="@+id/bottom_app_bar"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:backgroundTint="@color/..."
      ../>
然后在代码中定义:
//Corner radius
float radius = getResources().getDimension(R.dimen.default_corner_radius);
BottomAppBar bottomAppBar = findViewById(R.id.bottom_app_bar);

MaterialShapeDrawable bottomBarBackground = (MaterialShapeDrawable) bottomAppBar.getBackground();
bottomBarBackground.setShapeAppearanceModel(
       bottomBarBackground.getShapeAppearanceModel()
                .toBuilder()
                .setTopRightCorner(CornerFamily.ROUNDED,radius)
                .setTopLeftCorner(CornerFamily.ROUNDED,radius)
                .build());
android - 如何将带有圆角的android BottomAppBar-LMLPHP
它也可以使用fabCradle:
<com.google.android.material.bottomappbar.BottomAppBar
    android:id="@+id/bottomAppBar"
    app:fabAlignmentMode="center"
    app:fabCradleVerticalOffset="8dp"
    app:fabCradleMargin="8dp"
    .../>
android - 如何将带有圆角的android BottomAppBar-LMLPHP
它需要版本 1.1.0

10-08 20:17