设置cornerRadius后MaterialButton圆角效果不生效问题求助
问题解决思路
- 首先检查是否在Java/Kotlin代码中为第二个按钮动态设置了
android:background属性:MaterialButton的圆角实现依赖组件内置的背景drawable,如果你手动调用了setBackground()/setBackgroundResource()等方法覆盖默认背景,会导致圆角属性失效。如果需要自定义背景色请仅使用app:backgroundTint属性调整。 - 给父布局添加
android:clipChildren="false"和android:clipToPadding="false"属性,避免按钮圆角被父布局边界裁剪。 - 可以尝试给两个按钮显式指定shape外观,先在styles.xml中添加自定义样式:
然后给两个按钮都添加属性<style name="ButtonRoundedStyle" parent="Widget.MaterialComponents.Button"> <item name="cornerSize">@dimen/buttons_corners_radius</item> </style>style="@style/ButtonRoundedStyle"即可。 - 替换布局容器为水平方向的LinearLayout,使用weight属性分配宽度,避免RelativeLayout的对齐规则导致的按钮边界计算异常,示例布局如下:
<LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="17dp" android:orientation="horizontal" android:paddingStart="12dp" android:paddingEnd="12dp"> <com.google.android.material.button.MaterialButton android:id="@+id/btn_share" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:layout_marginEnd="3.5dp" android:layout_marginBottom="10dp" android:insetTop="0dp" android:insetBottom="0dp" android:text="@string/share_btn_txt" android:textColor="#FFFFFF" android:textSize="14sp" app:backgroundTint="#424242" app:cornerRadius="@dimen/buttons_corners_radius" app:elevation="5dp" app:fontFamily="@font/whitney" app:icon="@drawable/round_share_white_48dp" app:iconGravity="textStart" app:rippleColor="#2D2D2D" /> <com.google.android.material.button.MaterialButton android:id="@+id/btn_download" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:layout_marginStart="3.5dp" android:layout_marginBottom="10dp" android:insetTop="0dp" android:insetBottom="0dp" android:text="@string/download_btn_txt" android:textColor="#FFFFFF" android:textSize="14sp" app:backgroundTint="@color/colorPrimary" app:cornerRadius="@dimen/buttons_corners_radius" app:elevation="5dp" app:fontFamily="@font/whitney" app:icon="@drawable/round_get_app_white_48dp" app:iconGravity="textStart" app:rippleColor="@color/colorPrimaryDark" /> </LinearLayout> - 如果以上方案都无效,可以升级你的Material Components依赖版本到最新稳定版,排除低版本库的已知bug影响。
内容的提问来源于stack exchange,提问作者Regex
相关产品推荐
相关产品推荐

