我正在尝试创建一个带有中心图标的按钮。圆的顶部和底部有点平。有没有不使用转角半径的方法?这是我的按钮布局。
<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" />
答案 0 :(得分:11)
通过将cornerRadius
与inset
一起使用,可以得到圆形:
<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"/>
答案 1 :(得分: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"
/>
具有:
<style name="ShapeAppearanceOverlay.MyApp.Button.Circle" parent="">
<item name="cornerFamily">rounded</item>
<item name="cornerSize">50%</item>
</style>
或使用style="@style/Widget.MaterialComponents.Button.Icon"
它需要版本1.1.0。
答案 2 :(得分:0)
我的答案是对上述答案的增强。构建可重用资源:
<style name="ShapeAppearance.MdcShapeAppearance.SmallComponent.OutlinedCircleButton" parent="Widget.MaterialComponents.Button.OutlinedButton.Icon">
<item name="android:insetLeft">@dimen/dip_0</item>
<item name="android:insetRight">@dimen/dip_0</item>
<item name="android:insetTop">@dimen/dip_0</item>
<item name="android:insetBottom">@dimen/dip_0</item>
<item name="android:padding">@dimen/dip_0</item>
<item name="iconGravity">textStart</item>
<item name="iconPadding">@dimen/dip_0</item>
</style>
然后,您可以将其用作按钮样式。不要忘记添加 app:cornerRadius="@dimen/dip_20"
以使其成为您想要的尺寸的圆圈
<com.google.android.material.button.MaterialButton
android:id="@+id/btn_plus"
style="@style/ShapeAppearance.MdcShapeAppearance.SmallComponent.OutlinedCircleButton"
android:layout_width="@dimen/dip_20"
android:layout_height="@dimen/dip_20"
app:cornerRadius="@dimen/dip_20"
android:layout_marginEnd="@dimen/dip_16"
app:icon="@drawable/ic_plus"
app:iconTint="?colorOnBackground"
app:layout_constraintBottom_toBottomOf="@id/tv_total_checkout_product"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@id/tv_total_checkout_product"
app:strokeColor="?colorOnBackground" />