如何在Android中创建圆形轮廓材质按钮?

QTh*_*son 4 android android-layout android-button material-components material-components-android

我正在尝试创建一个带有中心图标的按钮。圆的顶部和底部有点平。有没有一种方法可以不使用转角半径?这是我的按钮布局。

<com.google.android.material.button.MaterialButton
        android:id="@+id/start_dispenser_btn"
        style="@style/Widget.MaterialComponents.Button.OutlinedButton"
        android:layout_width="175dp"
        android:layout_height="175dp"
        android:padding="14dp"
        app:cornerRadius="150dp"
        app:icon="@drawable/ic_play_arrow_black_60dp"
        app:iconGravity="end"
        app:iconSize="150dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toStartOf="@+id/stop_dispenser_btn"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/test_dispenser_container"
        app:strokeColor="@color/background_black" />
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

Ahm*_*our 17

通过使用cornerRadiuswithinset你可以获得圆形:

<com.google.android.material.button.MaterialButton
    style="@style/Widget.MaterialComponents.Button.OutlinedButton.Icon"
    android:layout_width="48dp"
    android:layout_height="48dp"
    app:cornerRadius="30dp"
    android:insetTop="0dp"
    android:insetBottom="0dp"
    android:insetLeft="0dp"
    android:insetRight="0dp"
    app:icon="@drawable/ic_menu"/>
Run Code Online (Sandbox Code Playgroud)


Gab*_*tti 6

您可以使用该app:shapeAppearanceOverlay属性定义拐角尺寸。您可以使用该50%值。

<com.google.android.material.button.MaterialButton
    android:layout_width="50dp"
    android:layout_height="50dp"
    style="@style/Widget.MaterialComponents.Button.OutlinedButton.Icon"
    app:icon="@drawable/ic_add_24px"
    app:iconSize="24dp"
    app:iconGravity="textStart"
    android:padding="0dp"
    app:iconPadding="0dp"
    android:insetLeft="0dp"
    android:insetTop="0dp"
    android:insetRight="0dp"
    android:insetBottom="0dp"
    app:shapeAppearanceOverlay="@style/ShapeAppearanceOverlay.MyApp.Button.Circle"
    />
Run Code Online (Sandbox Code Playgroud)

与:

  <style name="ShapeAppearanceOverlay.MyApp.Button.Circle" parent="">
    <item name="cornerFamily">rounded</item>
    <item name="cornerSize">50%</item>
  </style>
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

或与 style="@style/Widget.MaterialComponents.Button.Icon"

在此处输入图片说明

它需要版本1.1.0。

  • 很好的解决方案!我无法在文档中找到任何地方说明我们可以使用cornerSize 属性的百分比 - 感谢您的回答。对于找到此答案的其他人来说,单独定义插入(左、右等)非常重要,否则它们将不会被应用。 (3认同)